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();
    }
}
发布了39 篇原创文章 · 获赞 33 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/love1793912554/article/details/104299020