LoginSignup
3
6

More than 5 years have passed since last update.

Controller単位で役割によるアクセス制限を掛ける方法(@EnableGlobalMethodSecurity)

Posted at

Controller単位で役割によるアクセス制限

画面単位でユーザのアクセスを制限したい場合に、ServiceではなくControllerで制限を掛けた方がしっくりくる為、
その制限を掛ける方法を以下に記載する。
(本来、上記ケースではURLによるアクセス制限にする方が望ましい?)

アクセス制限の種類

アクセス制限は大きく分けて以下に分類できるが、
Controller単位でのアクセス制限は「2.クラス単位」を使用する事になる。

  1. URL
  2. クラス
  3. メソッド
  4. 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 {
    // 以下省略

}
3
6
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
3
6