SSM集成SpringSecurity(十一):rememberMe和获取登录用户信息

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();
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章