2016-09-04 18 views
3

Spring Security 3 @Secured( "admin")注釈をSpring Security 4互換のファッションに変換しようとしています。Springセキュリティ4 @PreAuthorize(hasAuthority())アクセスが拒否されました

これは私が持っているsecurity-context.xmlでその後、私のusersService.java

@PreAuthorize("hasAuthority('admin')") 
public List<User> getAllUsers() { 
    return usersDao.getAllUsers(); 
} 

です:

<security:intercept-url pattern="/admin" access="permitAll" /> 
... 
<security:global-method-security pre-post-annotations="enabled" /> 

getAllUsers()は、MySQLデータベースでLoginController.java

@RequestMapping("/admin") 
public String showAdmin(Model model) { 
    List<User> users = usersService.getAllUsers(); 

    model.addAttribute("users", users); 

    return "admin"; 
} 

によって呼び出され、2つのテーブルがあり、ユーザーと権限。 authoritiesには、ユーザー名と権限の2つの列があります。 administratorには、権限adminがあります。

/adminにアクセスすると、私は/loginにリダイレクトされますが、administratorでログインした後も、「アクセス拒否」と表示されます。

私は非常に基本的なものを見逃しているに違いないと思うが、私が春に初めて行ったときには、それを理解できなかった。どんな助けもありがとう。ありがとう。

更新:私は@PreAuthorize( "hasRole( 'ROLE_ADMIN')")に注釈を変更しようとしましたが、私もadminの "権限"列を "管理者"から "ROLE_ADMIN"に変更しましたが、 403.このエラーが出る前に、hasRole('admin')securityContext.xmlからhasAuthority('admin')に変更しなければならなかったので、私はこれについて多くの信念を持っていませんでした。

答えて

2

それは後半ですが、それにもかかわらず

hasRole(...)は、コンテンツの接頭辞を設定し、この@PreAuthorize("hasRole('ROLE_ADMIN')")

+0

いいえ、動作しません。私はいくつかの詳細で私の質問を更新します。 – ericcire

2

を試してみてください - デフォルトのものでは接頭辞なしROLE_

hasAuthority(...)チェックコンテンツをである、すなわち単に純粋な内容

+0

残念ながら、私はもはやこのプロジェクトに取り組んでいません。しかし、入力をありがとう。 – ericcire

関連する問題