rememberMe
springSecurity提供了一个rememberMe功能,可以让用户在一定时间内进行无密码登录。比如说在有效的时间内关闭了浏览器,然后重新打开一样有效。
该功能不是记住密码,大家不要弄混淆了。
1: login.jsp文件加入,name必须是remember-me
记住我:<input type="checkbox" name="remember-me" value="true"/>
2: 配置spring-security.xml文件。在最下面加上
<bean id="jdbcTokenRepository" class="org.springframework.security.web.authentication.rememberme.JdbcTokenRepositoryImpl">
<property name="dataSource" ref="dataSource"/>
<!-- 系统启动自动创建,第一次的时候打开,后来需要关闭 -->
<property name="createTableOnStartup" value="true"/>
</bean>
在http标签中加上
<!-- token-validity-seconds: 有效秒数 -->
<security:remember-me token-repository-ref="jdbcTokenRepository" token-validity-seconds="3600"/>
3:启动项目试试吧。
获取登录用户信息
获取登录的用户信息可以使用SecurityContextHolder。下面的代码可以在controller和service中使用。
//获取登录后用户: UserDetail对象 Object principal = SecurityContextHolder.getContext().getAuthentication().getPrincipal(); if(principal!=null){ if(principal instanceof UserDetails){ UserDetails userDetails = (UserDetails)principal; // 用户名 String username = userDetails.getUsername(); } }