-
Notifications
You must be signed in to change notification settings - Fork 478
Open
Description
jojo老师,我有一个疑问,就是您在视频中是如果用户没登陆就去登陆的接口
@RequestMapping("/social/signUp")
@ResponseStatus(HttpStatus.UNAUTHORIZED)
public SocialUserInfo socialInfo(HttpServletRequest request){
Connection<?> connection = providerSignInUtils.getConnectionFromSession(new ServletWebRequest(request));
SocialUserInfo socialUserInfo = new SocialUserInfo();
ConnectionKey key = connection.getKey();
socialUserInfo.setProviderId(key.getProviderId());
socialUserInfo.setProviderUserId(key.getProviderUserId());
socialUserInfo.setNickName(connection.getDisplayName());
socialUserInfo.getHeadImg();
appSignUpUtils.saveConnectionData(new ServletWebRequest(request), connection.createData());
return socialUserInfo;
}这是接口,关键是如果是app的话根本无法跳转到这里,然而在这个方法中您使用的是providerSignInUtils.getConnectionFromSession(new ServletWebRequest(request));来获取,此时app已经输入第二次发送请求了,您是在测试工具上应该也会带上session,所以获取到了第一次的connection,如果说是app呢?会拿得到吗?估计有点悬...
其实我有个好主意,利用认证错误处理器来做,这个时候还是属于第一次请求,我可以通过这个 providerSignInUtils来获取到,然后保存到redis中!然后写回去用户信息!这样也就不会发生跳转了!当错误处理器处理后,他也不会跳转页面!因为他会抛出 SocialAuthenticationRedirectException 这个类型i的异常,我还可以检查是这个异常就这样处理!
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels