页面获取Spring Security登录用户

 

1.在session中取得spring security的登录用户名如下:
${session.SPRING_SECURITY_CONTEXT.authentication.principal.username}
spring security 把SPRING_SECURITY_CONTEXT 放入了session 没有直接把username 放进去。下面一段代码主要描述的是session中的存的变量,

存跳转时候的URLsession
{SPRING_SECURITY_SAVED_REQUEST_KEY=SavedRequest[http://localhost:8080/AVerPortal/resourceAction/resourceIndex.action]}
存的是登录成功时候session中存的信息:

session {SPRING_SECURITY_CONTEXT=org.springframework.security.context.SecurityContextImpl@87b16984: Authentication: org.springframework.security.providers.cas.CasAuthenticationToken@87b16984: Principal: com.avi.casExtends.UserInfo@ff631d80: Username: test; Password: [PROTECTED]; Enabled: true; AccountNonExpired: true; credentialsNonExpired: true; AccountNonLocked: true; Granted Authorities: ROLE_ADMIN; Password: [PROTECTED]; Authenticated: true; Details: org.springframework.security.ui.WebAuthenticationDetails@12afc: RemoteIpAddress: 127.0.0.1; SessionId: AE56E8925195DFF4C50ABD384574CCEA; Granted Authorities: ROLE_ADMIN Assertion: org.jasig.cas.client.validation.AssertionImpl@661a11 Credentials (Service/Proxy Ticket): ST-3-1lX3acgZ6HNgmhvjXuxB-cas, userId=2, userName=test}

2.在页面端用tag获取:
<%@ taglib prefix='security' uri='http://www.springframework.org/security/tags'%>
<security:authentication property="principal.username"></security:authentication>
或者
<security:authorize ifAllGranted="ROLE_ADMIN">
<security:authentication property="principal.username"></security:authentication>
</security:authorize>
或者取session中的值:

${session.SPRING_SECURITY_CONTEXT.authentication.principal.username}
3.在后台获取

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

userDetails.getUsername()

 

如果想要获取更多的信息:得扩展userDetails的默认实现类user类和UserDetailsService接口

由于springsecurity是把整个user信息放入session中的即:session.SPRING_SECURITY_CONTEXT.authentication.principal。这个就是代表着user对象。

http://blog.csdn.net/zmx729618/article/details/51914836

 

6.1 th:text属性
可对表达式或变量求值,并将结果显示在其被包含的 html 标签体内替换原有html文本
文本连接:用“+”符号,若是变量表达式也可以用“|”符号
6.2 th:utext属性
e.g.
若home.welcome=Welcome to our <b>fantastic</b> grocery store!
用<p th:text="#{home.welcome}"></p>解析结果为:
<p>Welcome to our <b>fantastic</b> grocery store!</p>
解决方案
<p th:utext="#{home.welcome}"></p>即可。
等效于<p>Welcome to our <b>fantastic</b> grocery store!</p>

<div>
        <ol>
        <li>文本:
            <ol>
                <li>'xxxx':Now you are looking at a <span th:text="'working web application'">template file</span>.</li>
                <li>不能有空格、逗号:Now you are looking at a <span th:text="workingwebapplication">template file</span>.</li>
            </ol>
        </li>
        <li>数字:
            <ol>
                <li>The year is <span th:text="2014">1492</span>.</li>
                <li>In two years, it will be <span th:text="2014 + 2">1494</span>.</li>
            </ol>
        </li>
        <li>布尔值(true/false):
            <ol>
                <li>获取对象属性:<span th:if="${user.isAdmin} == false"> ...</span></li>
                <li>获取对象的方法(public):<span th:if="${user.isAdmin()} == false"> ...</span></li>
            </ol>
        </li>
        <li>null:<span th:if="${user.isAdmin()} == null"> ...</span></li>
        <li>连接:
            <ol>
                <li>连接符+:<span th:text="'The name of the user is ' + ${user.userName}"></span></li>
                <li>连接符|:<span th:text="|Welcome to our application, ${user.userName}!|"></span></li>
                <li><span th:text="'Welcome to our application, ' + ${user.userName} + '!'"></span></li>
                <li><span th:text="${onevar} + ' ' + |${twovar}, ${threevar}|"></span></li>
                <li><span th:utext="#{home.welcome}">Welcome to our grocery store!</span></li>
            </ol>
        </li>
        <li>th:utext:
            <ol>
                <li>th:text:<span th:text="${textWelcome}">textWelcome!</span></li>
                <li>th:utext:<span th:utext="${textWelcome}">textWelcome!</span></li>
            </ol>
        </li>
        </ol>
    </div>  

http://blog.csdn.net/sun_jy2011/article/details/40215101

 

时间: 2024-09-20 05:51:14

页面获取Spring Security登录用户的相关文章

spring security登录问题

问题描述 spring security登录问题 10C spring security 登录 访问/security_check,404,在本地访问正常,服务器上单个tomcat启动,也可以正常访问.但部署为分布式节点时,由外网访问就访问不了了.从日志看,有打印security相关的日志,但security_check的请求没有被security识别为默认的登录请求,而作为了一个普通请求,被security拦截了.如下图,运行环境一致,分布式部署使用的nginx 解决方案 应该是你发布的时候c

favicon.ico引起的spring security登录后跳转错误

之前一直没发现这个问题是因为在项目中存在favicon.ico文件,这个请求被nginx处理了而未转发给tomcat. 这次因为偷懒还没来得及配置nginx,结果就出现了上面的问题. 出现上述问题的原因是:基本大多数浏览器都会请求favicon.ico这个图标文件用来展示在浏览器的URL地址前面,而这个文件被spring security保护了,所以-有下面的流程: the user requests URL "/". This URL is cached. the browser m

cas 整合 spring security 后用户信息无法在不同应用程序间共用?

问题描述 cas整合springsecurity后用户信息无法在不同应用程序间共用.登录一个应用后,跳到另外一个应用,用户信息丢失了.开始时使用filter的形式,在多个应用之间可以共享信息.换成spring的security后,用户信息无法共享了.没思路.感觉应该是cas服务器端的配置问题. 解决方案 解决方案二:知道的出来帮帮忙!楼主,虽然我不会,给你吆喝吆喝!希望你能自己解决掉!解决方案三:我也想知道

Spring Boot中集成Spring Security 专题

if语句中条件判断就是检查当前的url请求是否是logout-url的配置值,接下来,获取用户的authentication,并循环调用处理器链中各个处理器的logout()函数,前面在parse阶段说过,处理器链中有两个实例,处理会话的SecurityContextLogoutHandler及remember-me服务,我们来一一看看它们的logout函数实现: 2.1.0 SecurityContextLogoutHandler public void logout(HttpServletR

spring 获取登录用户空指针异常

问题描述 spring 获取登录用户空指针异常 public class LoginUtil { private static final Logger logger = Logger.getLogger(LoginUtil.class); public static String getLoginUsername() { Object principal = SecurityContextHolder.getContext().getAuthentication().getPrincipal(

session-JSP页面如何获取当前登录用户的所有注册信息?

问题描述 JSP页面如何获取当前登录用户的所有注册信息? 看过不少相似的问题,但大多只是需要获取当前登录用户的用户名,这个只要在action里setAttrubibu()就可以了,但是我现在想将登录用户所有的注册信息都存进session,比如性别.邮箱.手机号什么的,但是在登录验证的时候只需要验证用户名和密码,其他的信息是不用输入的,这时候应该怎样把其他的信息也存入到session中呢? 解决方案 一般登录用户,会进行校验,进数据库与登录用户,进行比对,用户名和密码正确,则把从数据库中获取的用户

spring security 中,配置登录页面,登录页面的action一定要是j_spring_security_check吗?

问题描述 我自定义了一个登录页面,登录的action也是自己定义的,主要是去数据库验证用户名和密码是否正确.然后把当前用户存在session中.可发现Security 的http配置完后,拥有权限的用户并不能正确进入页面,都被拦截然后重定向到登录页面.因为初次使用security,有没高手给点意见,哪儿出了问题?截取配置片段:<http><form-login login-page="/demo/user/login" login-processing-url=&qu

Spring Security 实战:QQ登录实现

  准备工作 1.在 QQ互联 申请成为开发者,并创建应用,得到APP ID 和 APP Key.2.了解QQ登录时的 网站应用接入流程.(必须看完看懂) 为了方便各位测试,直接把我自己申请的贡献出来:APP ID : 101386962APP Key:2a0f820407df400b84a854d054be8b6a回调地址:http://www.ictgu.cn/login/qq 提醒:因为回调地址不是 http://localhost ,所以在启动我提供的demo时,需要在host文件中添加

Spring Security笔记:使用数据库进行用户认证(form login using database)

在前一节,学习了如何自定义登录页,但是用户名.密码仍然是配置在xml中的,这样显然太非主流,本节将学习如何把用户名/密码/角色存储在db中,通过db来实现用户认证 一.项目结构 与前面的示例相比,因为要连接db,所以多出了一个spring-database.xml用来定义数据库连接,此外,为了演示登录用户权限不足的场景,加了一个页面403.jsp,用来统一显示权限不足的提示信息 二.数据库表结构(oracle环境) 1 create table T_USERS 2 ( 3 d_username