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')
に変更しなければならなかったので、私はこれについて多くの信念を持っていませんでした。
いいえ、動作しません。私はいくつかの詳細で私の質問を更新します。 – ericcire