8

私のアプリは、現在のユーザーが特定のタイプである場合にのみアクセスを許可します。これは、そのユーザーが持つ役割が他のアプリケーションにログインし、特定の役割でアプリの特定の部分にアクセスできることも意味します。たとえば、私の Web アプリは次のように構成されています。

<security-role> 
   <role-name>teamb</role-name>       
</security-role>

ここで必要なのは、アプリでこの役割に関する詳細、つまりユーザー名にアクセスできるようにすることです

Spring MVCアプリでこれを行うにはどうすればよいですか?

4

1 に答える 1

15

まず、対応するタグ ライブラリをページに含めます (JSP を使用して例を作成します)。

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

次に、これらのタグを使用して、アクセス許可と、もちろんデータをクエリするだけです。

ユーザーが何かに対して十分な権限を持っているかどうかを確認するには:

<sec:authorize ifAllGranted="ROLE_ADMIN">
    <a href="page.htm">Some Admin Stuff</a>
</sec:authorize>

ユーザーが十分な権限を持っている場合、へのリンクpage.htmがレンダリングされます。

ユーザー名を取得するには、 を使用します${SPRING_SECURITY_LAST_USERNAME}。例として、ログアウト リンクを次に示します。

<a href="<c:url value="/j_spring_security_logout" />">Logout <c:out value="${SPRING_SECURITY_LAST_USERNAME}"/></a>

編集

現在認証されているユーザーを照会するには、さまざまな方法を試すことができます。

Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
String username = authentication.getName();

また

Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
User user = (User)authentication.getPrincipal();
user.getUsername();

またはメソッドauthenticationを呼び出す前に、 null でないかどうかを確認することを忘れないでください。getNamegetPrincipal

于 2012-09-14T16:21:12.853 に答える