SpringBootセキュリティOauth2の役割と権限の認証アノテーションメソッドhasRoleとhasAuthorityの使用の違い

SpringBootセキュリティセット権限テスト結果

ADMIN2、ROLE_ADMIN

String[] permissions = "ADMIN2,ROLE_ADMIN".split(",");
List<GrantedAuthority> authorities = new ArrayList<>();
for (String permission : permissions) {
    authorities.add(new SimpleGrantedAuthority(permission));
}
userDetails.setAuthorities(authorities);

コントローラにメソッドアノテーションパーミッションテスト結果を追加します。

@PreAuthorize("hasRole('ADMIN')")                //允许
@PreAuthorize("hasRole('ROLE_ADMIN')")           //允许
@PreAuthorize("hasRole('ADMIN2')")               //不允许
@PreAuthorize("hasRole('ROLE_ADMIN2')")          //不允许
@PreAuthorize("hasAuthority('ADMIN2')")          //允许
@PreAuthorize("hasAuthority('ROLE_ADMIN2')")     //不允许
@PreAuthorize("hasAuthority('ADMIN')")           //不允许
@PreAuthorize("hasAuthority('ROLE_ADMIN')")      //允许

テストは次のことを示しています。

プレフィックスROLE_を追加して、次の3つの方法で権限を確認します。

@PreAuthorize("hasRole('ADMIN')")                //允许
@PreAuthorize("hasRole('ROLE_ADMIN')")           //允许
@PreAuthorize("hasAuthority('ROLE_ADMIN')")      //允许

ROLE_を増やさずに権限を確認する方法は1つだけです。

@PreAuthorize("hasAuthority('ADMIN2')")          //允许

 

おすすめ

転載: blog.csdn.net/ipifei/article/details/108439183