【登录前】如何根据不同类型的请求返回登录页面或json

HttpSessionRequestCache
image.png

【登录后】AuthenticationSuccessHandler:登录成功Handler

image.png

验证码

p1o6vt/ValidateCodeController.java at master · cow-boy/p1o6vt
p1o6vt/ValidateCodeFilter.java at master · cow-boy/p1o6vt

  • 自定义大小
  • 自定义配置验证码拦截路径

remember me

image.png
image.png
配置PersistentTokenRepository,自动创建表。
image.png
image.png

短信登录

image.png
image.png

OAuth(Spring Social)

image.png
image.png

OAuth2Template

提供oauth各个步骤的操作。

AbstractOAuth2ApiBinding

对应第6步,获取用户信息。
所以,需要token和RestTemplate
根据前一步的token获取openID
image.png

OAuth2Connection

封装第6步获取到的用户信息
要得到OAuth2Connection,由ConnectionFactory调用ServiceProvider来完成各个步骤。
image.png
image.png
ApiAdapter来将Api转换位Connection。

UsersConnectionRepository

来记录数据库中的用户和OAuth用户的对应关系。
image.png
建表sql。

SocialUserDetailsService

image.png
传入userId。这个是框架自动从数据库中获取得到的。

ConnectionSignUp

第三方登录,为自动注册生成userId。
image.png

ConnectController

ConnectController#connectionStatus()

获取当前用户绑定信息
image.png
建立一个view(connect/status),用来返回json
image.png

ConnectController#connect()

新增绑定
image.png

Session管理

Session失效地址

image.png

Session并发登录控制

image.png
SessionInformationExpiredStrategy,能获取到session过期事件
maxSessionsPreventsLogin

  • true:已经登录,不允许新登录
  • false:踢掉旧登录

    ——-

    totp:基于时间的一次性密码算法

    有工具包