|
@@ -6,31 +6,58 @@ import org.hswebframework.web.authorization.listener.AuthorizationListener;
|
|
import org.hswebframework.web.authorization.listener.event.AuthorizationSuccessEvent;
|
|
import org.hswebframework.web.authorization.listener.event.AuthorizationSuccessEvent;
|
|
import org.hswebframework.web.authorization.token.UserToken;
|
|
import org.hswebframework.web.authorization.token.UserToken;
|
|
import org.hswebframework.web.authorization.token.UserTokenManager;
|
|
import org.hswebframework.web.authorization.token.UserTokenManager;
|
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
|
|
|
|
+import java.util.ArrayList;
|
|
|
|
+import java.util.List;
|
|
import java.util.Optional;
|
|
import java.util.Optional;
|
|
import java.util.UUID;
|
|
import java.util.UUID;
|
|
|
|
|
|
/**
|
|
/**
|
|
- * TODO 完成注释
|
|
|
|
- *
|
|
|
|
* @author zhouhao
|
|
* @author zhouhao
|
|
*/
|
|
*/
|
|
public class UserOnSignIn implements AuthorizationListener<AuthorizationSuccessEvent> {
|
|
public class UserOnSignIn implements AuthorizationListener<AuthorizationSuccessEvent> {
|
|
|
|
+
|
|
|
|
+ private String defaultTokenType="sessionId";
|
|
|
|
+
|
|
private UserTokenManager userTokenManager;
|
|
private UserTokenManager userTokenManager;
|
|
|
|
|
|
|
|
+ private List<UserTokenGenerator> userTokenGenerators=new ArrayList<>();
|
|
|
|
+
|
|
public UserOnSignIn(UserTokenManager userTokenManager) {
|
|
public UserOnSignIn(UserTokenManager userTokenManager) {
|
|
this.userTokenManager = userTokenManager;
|
|
this.userTokenManager = userTokenManager;
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ public void setDefaultTokenType(String defaultTokenType) {
|
|
|
|
+ this.defaultTokenType = defaultTokenType;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Autowired(required = false)
|
|
|
|
+ public void setUserTokenGenerators(List<UserTokenGenerator> userTokenGenerators) {
|
|
|
|
+ this.userTokenGenerators = userTokenGenerators;
|
|
|
|
+ }
|
|
|
|
+
|
|
@Override
|
|
@Override
|
|
public void on(AuthorizationSuccessEvent event) {
|
|
public void on(AuthorizationSuccessEvent event) {
|
|
UserToken token = UserTokenHolder.currentToken();
|
|
UserToken token = UserTokenHolder.currentToken();
|
|
- String tokenType = (String) event.getParameter("token_type").orElse("sessionId");
|
|
|
|
|
|
+ String tokenType = (String) event.getParameter("token_type").orElse(defaultTokenType);
|
|
|
|
|
|
if (token != null) {
|
|
if (token != null) {
|
|
|
|
+ //先退出已登陆的用户
|
|
userTokenManager.signOutByToken(token.getToken());
|
|
userTokenManager.signOutByToken(token.getToken());
|
|
}
|
|
}
|
|
- token = userTokenManager.signIn(createToken(tokenType), event.getAuthentication().getUser().getId());
|
|
|
|
- event.getResult().put("token", token.getToken());
|
|
|
|
|
|
+ //创建token
|
|
|
|
+ TokenResult newToken = userTokenGenerators.stream()
|
|
|
|
+ .filter(generator->generator.getSupportTokenType().equals(tokenType))
|
|
|
|
+ .findFirst()
|
|
|
|
+ .orElseThrow(()->new UnsupportedOperationException(tokenType))
|
|
|
|
+ .generate(event.getAuthentication());
|
|
|
|
+ //登入
|
|
|
|
+ userTokenManager.signIn(newToken.getToken(), event.getAuthentication().getUser().getId(),newToken.getTimeout());
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ //响应结果
|
|
|
|
+ event.getResult().putAll(newToken.getResponse());
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|