詰まったところ
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