我的应用程序仅在当前用户是特定类型时才允许访问,这也意味着他们拥有的角色可以登录到其他应用程序,然后以特定角色访问我的应用程序的某些部分,例如,我的 Web 应用程序配置为
<security-role>
<role-name>teamb</role-name>
</security-role>
现在我需要的是能够在我的应用程序中访问有关此角色的详细信息,即用户名
我怎样才能在我的Spring MVC
应用程序中做到这一点?
我的应用程序仅在当前用户是特定类型时才允许访问,这也意味着他们拥有的角色可以登录到其他应用程序,然后以特定角色访问我的应用程序的某些部分,例如,我的 Web 应用程序配置为
<security-role>
<role-name>teamb</role-name>
</security-role>
现在我需要的是能够在我的应用程序中访问有关此角色的详细信息,即用户名
我怎样才能在我的Spring MVC
应用程序中做到这一点?
首先,在你的页面中包含相应的标签库(我会用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();
请记住在调用or方法之前检查 if authentication
is not null 。getName
getPrincipal