- 履歴一覧
- 差分 を表示
- 現在との差分 を表示
- ソース を表示
- Spring Boot/authoritiesに応じて処理をガードする へ行く。
- 1 (2018-02-20 (火) 15:50:15)
- 2 (2018-02-20 (火) 15:52:03)
キーワード†
- Spring Boot
- Spring Security
- PreAuthorize
したいこと†
ロール(roles)に紐づける権限(authorities)に応じて、特定の処理をガードしたい。権限があるユーザーだけが処理できるように。
どうやって†
URLを拾ってガードすることもできるようだけど、権限の分だけURLの名前をつけ分けることは難しいので、サービスのメソッドにガードをかけるようにする。
- Some情報を追加するメソッドを
- ADD_SOME_DATA権限をもつユーザーだけ実行できる
ようにする。
@PreAuthorize("hasAuthority('ADD_SOME_DATA')") @Transactional(readOnly = false) fun add(someData: SomeData) { /* ガードがかかる追加処理 */ }
ちなみに†
@PreAuthorizeによる権限チェックをするにはSecurityConfigで次の設定をする必要がある。
@EnableGlobalMethodSecurity(prePostEnabled = true) // <-- これ @Configration class SecurityConfig: WebSecurityConfigurerAdapter { ...