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