spring security获取当前登录用户信息
Posted on: 2013-10-23, Last modified: 2015-07-31, View: 4972

如果只是想从页面上显示当前登陆的用户名,可以直接使用Spring Security提供的taglib。

<%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags" %>
<div>username : <sec:authentication property="name"/></div>

        
如果想在程序中获得当前登陆用户对应的对象。

UserDetails userDetails = (UserDetails) SecurityContextHolder.getContext()
    .getAuthentication()
    .getPrincipal();

       
如果想获得当前登陆用户所拥有的所有权限。

GrantedAuthority[] authorities = userDetails.getAuthorities();

 

补充:

在使用CAS + Spring security 整合实现SSO时, 在客户端应用访问有的地址时无法获取当前登录用户信息(即通过SecurityContextHolder.getContext().getAuthentication().getPrincipal()返回null).


这是由于对该地址的访问不经过Spring Security所引起的. 即该地址对应的URL 不在Spring Security配置文件的<intercept-url>中, 该URL没有任何的权限所导致的,

只要将该URL地址赋予一定的Spring Security权限即可解决该问题.

 

Go
Friend Links:
Bill Site
https://item.taobao.com/item.htm?spm=a21an.7676007.1998473182.296.lAvrE2&id=45399580446