#Controller単位で役割によるアクセス制限
画面単位でユーザのアクセスを制限したい場合に、ServiceではなくControllerで制限を掛けた方がしっくりくる為、
その制限を掛ける方法を以下に記載する。
(本来、上記ケースではURLによるアクセス制限にする方が望ましい?)
#アクセス制限の種類
アクセス制限は大きく分けて以下に分類できるが、
Controller単位でのアクセス制限は「2.クラス単位」を使用する事になる。
- URL
- クラス
- メソッド
- HTML
#実装方法
WebSecurityConfigurerAdapterを継承したクラスに@EnableGlobalMethodSecurity(securedEnabled = true)
を付与する。
その後、各Controllerに対して@Secured(value = "ROLE_XXXX")
を付与すればOK。
WebSecurityConfig.java
@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(securedEnabled = true)
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
// 以下省略
}
UserSearchController.java
@Secured(value = "ROLE_ADMIN")
public class UserSearchController {
// 以下省略
}