/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 问题
相似问题