/social/signUp 302返回,再发起请求应该是新的请求了,怎么能拿到之前session中的信息呢?
来源:6-7 重构注册逻辑

代码有毒
2018-08-09
@RestController public class AppSecurityController { private Logger logger = LoggerFactory.getLogger(getClass()); @Autowired private ProviderSignInUtils providerSignInUtils; @GetMapping(value = "/social/signUp") @ResponseStatus(HttpStatus.UNAUTHORIZED) public Connection signUp(HttpServletRequest request) { Connection<?> connectionFromSession = providerSignInUtils.getConnectionFromSession(new ServletWebRequest(request)); logger.info(ReflectionToStringBuilder.toString(connectionFromSession, ToStringStyle.JSON_STYLE)); return connectionFromSession; } } ``` 我使用postman,跟踪源码的确是走了Redirect;但是postman里面没有302状态, 直接走到上面的控制器里面去了。。搞不明白啊; 一直有一个疑惑,不是说app没有session吗?302的话相当于ajax响应。再次发起请求不是同一个session了,怎么拿到信息的呢? ```java // connection unknown, register new user? if (signupUrl != null) { // store ConnectionData in session and redirect to register page sessionStrategy.setAttribute(new ServletWebRequest(request), ProviderSignInAttempt.SESSION_ATTRIBUTE, new ProviderSignInAttempt(token.getConnection())); throw new SocialAuthenticationRedirectException(buildSignupUrl(request)); } ```
如上代码中,/social/signUp 302返回,再发起请求应该是新的请求了,怎么能拿到之前session中的信息呢? 这一点我没有明白。忘老师解说下。
写回答
1回答
-
代码有毒
提问者
2018-08-09
> 回答:
> postman中settings中有一个选项 Automatically follow redirects;关闭掉也就是变成OFF,就不会自动跳转了
> 关于 /social/signUp 能获取到session信息,也就是302能获取到session:
> 是因为postman中有服务器带回来的cookie,禁止掉cookie,就会发现获取不到了
00
Spring Security技术栈开发企业级认证与授权
Spring Security技术栈,REST风格开发常见接口,独立开发认证授权模块保证REST服务安全
2662 学习 · 1561 问题
相似问题