ログイン後の画面にログインしたユーザを表示するには? | Java Springの逆引きメモ

Java Springの逆引きメモ

JavaのSpring frameworkのメモを書いていきます!
初心者の勉強ノートなので間違いがあるかもしれませんが、何かヒントになることがあれば幸いです。

前回までに、SpringSecurityの設定方法や動きを見てきました。

ここでは、認証がされて無事にログインした後に、JSP上でログイン情報を表示する方法を見てみます。



JSP以外の設定は、以前の記事 を参照してみてください。



【JSPファイル】

<%@ page language="java" pageEncoding="utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"% >
<%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags " %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="stylesheet" href="css/default.css" type="text/css" />

<title>トップページ</title>
</head>
<body>
<a href="logout">ログアウト</a>
<br />
ログインユーザ:<sec:authentication property="principal.username" />



</body>
</html>



【説明】

SpringSecurityではtaglibが用意されています。

これを使用すると、取得が面倒な情報も簡単に取得できます!


まず、taglibの宣言を見てみましょう。

<%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags " %>


ここで定義されているtaglibはいくつかあります。

一応、記述してみましょうか。


 ・authentication ・・・Authentication オブジェクトのgetterを呼び出します。

            上記のログインユーザで記述しているprincipal.username は以下のような意味です。

              authentication.getPrincipal().getUserName()

            クラスは、ログイン情報を持っています。ユーザID、パスワード、有効性、ロールなどです。


 ・authorize ・・・ログインユーザが指定したロールを持っていた場合にタグの内部が表示されます。

           ロールの判定の仕方は、ifAllGranted、 ifAnyGranted、 ifNotGrantedの3種類があります。



上記を使用すれば、ログインユーザのIDを表示したり、

ログインユーザがもっているロールに応じてリンクを表示したり非表示にしたりできます。

どうです?

簡単でしょ?




参考:

・実際に認証と認可をWEBにつけるには? (基本編:設定方法)

・ロールによって画面のリンクの表示/非表示を制御するには?

・閲覧許可がある画面のリンクのみ表示するには?

SpringSecurityでラクラクセキュリティ対策