プログラミング 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


関連記事

【SpringBoot入門】#5~ 登録画面の作成

概要 共通ヘッダーの「新規登録」リンクから遷移する、書籍情報登録画面を作成します。 遷移できるようにControllerの作成と、遷移先である画面をHTMLで作成していきます。   Formクラスの作 …

MySQL-タイムゾーン設定すると起動しなくなる原因と対処方法

MySQLのタイムゾーン設定をすると、XAMPPでMySQLが起動できなる原因と対処法です。   原因 原因は、MySQL(MariaDB)は最初から日本語設定が入ってないためです。 def …

Java Silver SE11に誰でも合格できる方法

※お断り とても基本的かつ地道な方法です。 なので、魔法や銀の弾丸を求めている方はそっとページを閉じてください。 地道にこつこつと努力できる方のみ読み進めて下さい。 対象 ・Java Silver S …

【Spring+Thymeleaf】リクエストパラメーターをControllerで受け取る方法

概要 Spring+Thymeleafにおいて、リクエストパラメーターをControllerで受け取るパターンを紹介します。 リクエストパラメーターのパターンは以下の通りです。 ・単一(inputタグ …

AWSへWebアプリケーション(Java)をデプロイする方法(書籍紹介)

対象者 ・個人開発者 ・ポートフォリオ作成者 手順 こちらの書籍を参考に私自身がAWSにデプロイした手順です。 書籍では図解もあってわかり易く解説されているので、ここでは流れを簡潔に説明します。 すで …

SpringFramworkの良書

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

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