看了一些网上的教程(教程地址:https://juejin.im/post/5a7ae6... ), spring social提供了一个ConnectController实现了绑定与解绑
其中前端发送 /connect/{providerId}(DELETE请求) 就能解除相关绑定
然后说在调用该请求之后会返回 connect/{providerId}Connect 的这样一个视图, 但这个视图需要自己扩展实现
但我自己编写发现确实能删除数据库中的绑定, 但不会跳转到connect/{providerId}Connect, 而是不断的死循环, 最后前端返回ERR_TOO_MANY_REDIRECTS, 查看ConnectController的源码
@RequestMapping(value="/{providerId}", method=RequestMethod.DELETE)
public RedirectView removeConnections(@PathVariable String providerId, NativeWebRequest request) {
ConnectionFactory<?> connectionFactory = connectionFactoryLocator.getConnectionFactory(providerId);
preDisconnect(connectionFactory, request);
connectionRepository.removeConnections(providerId);
postDisconnect(connectionFactory, request);
return connectionStatusRedirect(providerId, request);
}
protected RedirectView connectionStatusRedirect(String providerId, NativeWebRequest request) {
HttpServletRequest servletRequest = request.getNativeRequest(HttpServletRequest.class);
String path = "/connect/" + providerId + getPathExtension(servletRequest);
if (prependServletPath(servletRequest)) {
path = servletRequest.getServletPath() + path;
}
return new RedirectView(path, true);
}
private String getPathExtension(HttpServletRequest request) {
String fileName = WebUtils.extractFullFilenameFromUrlPath(request.getRequestURI());
String extension = StringUtils.getFilenameExtension(fileName);
return extension != null ? "." + extension : "";
}
上面的源码并没有将/connect/{providerId}转换成connect/{providerId}Connect啊, 最后的return connectionStatusRedirect(providerId, request) 不还是会回到removeConnections中吗?
自己测出来了, 不能发送ajax请求, 用了form提交的形式就可以了