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(); } }