1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Spring Security ROLEの判断 うまくいかない時はhasRoleとhasAuthorityを理解する

Posted at

詰まったところ

Spring Securityでパス毎に許可するROLEをセットして、動作確認すると想定している動きにならない。。
という形で自分がハマったのでメモ。

Roleを以下2つで設定

ロール
ADMIN
INSTRUCTOR
うまくいかない例

    override fun configure(http: HttpSecurity) {

        //許可の設定
        http.authorizeRequests()
                .antMatchers("/").hasAnyRole("ADMIN","INSTRUCTOR")
                .anyRequest().authenticated()
うまくいく例

    override fun configure(http: HttpSecurity) {

        //許可の設定
        http.authorizeRequests()
                .antMatchers("/").hasAnyAuthority("ADMIN","INSTRUCTOR")
                .anyRequest().authenticated()

なぜか

hasRoleを使用した場合、引数で指定した文字列にプレフィックスとして"ROLE_"をつけて判断するため。
上記のうまくいかない例では、実際には"ROLE_ADMIN"とROLE_INSTRUCTOR"で判断される。
hasAuthorityは、引数の文字列をそのまま受け取る。

以下、参考にさせていただきました。
https://qiita.com/yokobonbon/items/7d729bd8085f3fb898bb
https://qiita.com/opengl-8080/items/032ed0fa27a239bdc1cc

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?