プログラミング Java

【SpringSecurity】#2~ ユーザ毎の権限設定(認可)

投稿日:2021年2月11日 更新日:

概要

権限によって、アクセス可能なページを制限する機能の実装します。
管理者画面を作成し、権限によって画面の出し分けを行います。

前提

実装

管理者画面の作成

配置先:src/main/resources/templates/admin/index.html

イメージ

HTML

Controller
配置先:src/main/java/com/example/demo/controller/AdminController.java

 

セキュリティの設定

SecurityConfig.java

.antMatchers(“/admin/**”).hasAuthority(“ROLE_ADMIN”)
 /admin以下のディレクトリは、ROLE_ADMINの権限を有するユーザのみ許可します。

出し分けの制御

SpringBootチュートリアルのヘッダーに管理画面用のリンクを追加して、
アドミン権限を持つユーザがログインした場合のみ表示されるようにします。

配置先:src/main/resources/templates/header.html

イメージ(ホーム画面)

HTML

以下、SpringBootチュートリアル > #4~ headerの作成と埋め込みに対する変更点です。

・xmlns:sec=”http://www.thymeleaf.org/extras/spring-security”
 無くても実装上の問題にはならないが、
 HTML5の定義にないことでIDE上に警告表示されることが無いようにする対処。

・<a sec:authorize=”hasRole(‘ROLE_ADMIN’)” th:href=”@{/admin/index}”>管理画面</a>
 ユーザの権限がROLE_ADMINであればリンクが表示されるようにします。
  

テスト

  • ユーザ権限でログインし、管理画面のリンクが表示されないこと
  •  

  • ユーザ権限でログインし、管理画面のリンクを直接指定してもアクセスできないこと

    ※SpringBootチュートリアルを元にしているため、エラーページが表示されます。
  •  

  • 管理権限でログインし、管理画面のリンクが表示されること
  •  

  • 管理権限でログインし、管理画面のリンクをクリックしてアクセスできること

まとめ

  • アクセス可能なページをSecurityConfigで定義する。
  • 画面上で、権限を有するユーザのみ表示するにはhasRoleで定義する。
  • 権限のないユーザは、直接リンクであってもアクセスできない。

参考

SpringSecurityについてもう一歩踏み込んで学んでみたい人向けの教科書
Spring解体新書 セキュリティ編 Spring Securityを徹底解説: 記憶喪失になっても忘れはいけないセキュリティ対策集

 
最後までお読み頂き、ありがとうございました!
ご意見・ご要望がありましたら、遠慮なくコメント下さい!
もし内容が良かったらランキング評価を頂けると励みになります(^^)

ランキング評価する

-プログラミング, Java
-, ,

執筆者:


comment

メールアドレスが公開されることはありません。

CAPTCHA


関連記事

gradle

gradleタスクのビルド時にプロパティを引数に付与する方法

概要 gradleタスクのビルド時にプロパティを引数で付与するには、「-Pに続けてプロパティ名=値」で指定します。 <usage>

  …

【Java】ArrayListの使い方まとめ

概要 ArrayListはOracleの公式ページでも明記しているクラスです。 Java SE 11 Programmer I (1Z0-815-JPN) 試験 インタフェースによる抽象化 インタフェ …

【SpringBoot入門】#8~ 検索機能の実装

概要 ・検索フォームから条件を指定して検索すると、条件に一致する結果が一覧画面に表示される。 ・検索条件は複合的に指定できることとする。 ・検索結果は適切にフォーマットされることとする。  (日付はy …

Javaで数値(int)を部分一致判定する

文字列に変換して判定します。 <方法> ・matchesメソッドで正規表現使う。 ・containsメソッドに判定文字を渡す。 また、メソッドに切り出すと、intを変換する処理を個別に書かなくてよくな …

【SpringBoot入門】#13~ 独自のエラー画面の作成

概要 何らかのエラーが発生した場合に、エラー画面を表示して対応したいことがあります。 デフォルトのwhite label Error pageのままというわけにはいかないので、 独自のエラー画面を作成 …

SpringFramworkの良書

■おすすめ教材
Javaの基本を学んだ人が、次のステップとして読む本(中級者向け)

※SpringはJavaのFrameworkの1つです。
変更のしやすさ、保守性の高さが特徴です。