在spring social中,一共是三种登陆方式

1、用户名+密码;2、手机号+短信登陆;3、社交网站账号登陆

这三种方式都是采用session管理登陆的。

所以这篇文章我们讲解一下session

配置session的超时时间(单位是秒,默认是60*30=半个小时)

Spring Security深入浅出--7、单机session管理

现在虽然设置了,但是如果小于60s也会失效

查看类TomcatEmbeddedServletContainerFactory

Spring Security深入浅出--7、单机session管理

获得我们设置的秒数,然后转换成分钟数,然后进行比较,如果小于一分钟则使用一分钟

Spring Security深入浅出--7、单机session管理

失效以后,服务器是不知道到底是因为没有登录还是session失效导致的,所以我们需要自己写逻辑

Spring Security深入浅出--7、单机session管理

配置上过期失效跳转的地址

Spring Security深入浅出--7、单机session管理

配置映射 处理

Spring Security深入浅出--7、单机session管理

授权

Spring Security深入浅出--7、单机session管理

 启动,测试

Spring Security深入浅出--7、单机session管理

现在要处理的就是现在登录的session踢掉之前登陆的session

设置为1,也及时服务器这边一直只有一个session,也就是现在登录的session踢掉之前登陆的session

Spring Security深入浅出--7、单机session管理

对于过期session的具体处理

Spring Security深入浅出--7、单机session管理

Spring Security深入浅出--7、单机session管理 

Spring Security深入浅出--7、单机session管理

重启服务器,分别用谷歌和火狐浏览器登陆

Spring Security深入浅出--7、单机session管理

如果你登陆成功之后,不希望第二个用户把你踢下去,而是他不能登陆,设置为true(当session达到最大数量之后,阻止后面的用户登陆)

Spring Security深入浅出--7、单机session管理

 现在都是返回的json数据,现在我们重构,使得在需要返回json的时候,返回json数据,在需要返回页面的时候返回html页面

Spring Security深入浅出--7、单机session管理

需要的参数都放到SessionProperties类中

Spring Security深入浅出--7、单机session管理

Spring Security深入浅出--7、单机session管理

判断逻辑

Spring Security深入浅出--7、单机session管理

Spring Security深入浅出--7、单机session管理

为什么使用@ConditionalOnMissingBean(SessionInformationExpiredStrategy.class)注解,方便我们写,只要我们重写SessionInformationExpiredStrategy接口,在注入到bean中就可以实现我们自己的bean

失效页面

Spring Security深入浅出--7、单机session管理

相关文章: