Spring Security 中取得 RememberMe 的 cookie 值
Spring Security 中取得 RememberMe 的 cookie 值
郁也风 发表于3年前
Spring Security 中取得 RememberMe 的 cookie 值
  • 发表于 3年前
  • 阅读 972
  • 收藏 4
  • 点赞 0
  • 评论 0

腾讯云 新注册用户 域名抢购1元起>>>   

摘要: RememberMe 的 cookie name 一般都是配置的,所以我们在程序中可以不直接通过这个 name 取得对应的 cookie 值。

Spring Security 中的 RememberMe 对应的 cookie 名称是可配置的——相信一般情况下大家也不会使用那个默认的值吧。不过既然是可配置的,我们一般就尽量不在程序中直接写这个名称,想取得此名称对应的 cookie 值就得做一些扩展了。

java 代码如下,本质很简单,就是将 protected 方法改为 public(SS 有点多此一举)。 <pre> /**

  • 将 extractRememberMeCookie 方法由父类的 protected 改为 public,并在其它地方取得 RememberMe 的
  • cookie 内容。
  • 例如用来判断请求中是否存在 RememberMe 信息。
  • @author wjx

*/ public class CustomTokenBasedRememberMeServices extends TokenBasedRememberMeServices {

/**
 * 可以通过构造函数传入 key 和 service
 * 
 * @param key
 * @param userDetailsService
 */
public CustomTokenBasedRememberMeServices(String key,
		UserDetailsService userDetailsService) {
	super(key, userDetailsService);
}

@Override
public String extractRememberMeCookie(HttpServletRequest request) {
	return super.extractRememberMeCookie(request);
}

@Override
public String getCookieName() {
	return super.getCookieName();
}

} </pre>

然后在 xml 中做如下配置即可:

<beans:bean id="rememberMeServices"
	class="com.someok.module.admin.security.CustomTokenBasedRememberMeServices">
	<beans:constructor-arg index="0"
		value="XXXXXXXXX" />
	<beans:constructor-arg index="1"
		ref="userDetailsService" />

	<beans:property name="cookieName" value="REMEMBER_ME" />
	<!-- 30 days -->
	<beans:property name="tokenValiditySeconds" value="2592000" />
</beans:bean>

在 service 中调用的时候:

@Autowired
CustomTokenBasedRememberMeServices rememberMeServices;

String value = rememberMeServices.extractRememberMeCookie(request);

Over!!!

共有 人打赏支持
粉丝 16
博文 18
码字总数 10312
×
郁也风
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: