前回までに、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につけるには? (基本編:設定方法)