当我想要注销时,我调用以下代码:
request.getSession().invalidate();
SecurityContextHolder.getContext().setAuthentication(null);
怎么修?
下面是我的实现(Spring OAuth2):
@Controller
public class OAuthController {
@Autowired
private TokenStore tokenStore;
@RequestMapping(value = "/oauth/revoke-token", method = RequestMethod.GET)
@ResponseStatus(HttpStatus.OK)
public void logout(HttpServletRequest request) {
String authHeader = request.getHeader("Authorization");
if (authHeader != null) {
String tokenValue = authHeader.replace("Bearer", "").trim();
OAuth2AccessToken accessToken = tokenStore.readAccessToken(tokenValue);
tokenStore.removeAccessToken(accessToken);
}
}
}
用于测试:
curl -X GET -H "Authorization: Bearer $TOKEN" http://localhost:8080/backend/oauth/revoke-token
问题内容: 我正在考虑为我的应用程序使用OAuth2。我尝试实现的体系结构如下: 我将拥有自己的(仅此)授权服务器 一些资源应用程序使用授权服务器验证对资源的访问 某些客户端应用程序(网络,移动设备)会将用户重定向到授权服务器进行身份验证,如果成功,则会在资源应用程序上使用api。 到目前为止,我已经成功实现了3个基本应用程序(1个身份验证服务器,1个资源服务器和1个客户端)之间的交互。我无法正常
null 提前道谢。
正如这里提到的http://projects.spring.io/spring-security-oauth/docs/oauth2.html,撤销是通过刷新令牌完成的。但这似乎不起作用。
4.2.4注销处理 logout元素通过导航到特定URL添加了对注销的支持。默认的注销URL是/logout,但是您可以使用logout-url属性将其设置为其他内容。有关其他可用属性的更多信息可以在命名空间附录中找到。 但是,在遵循文档中的安全设置后,URL/logout不会显示注销页面。相反,它显示 Spring Framework 4.1.6 Spring Security 4.0.0 we
我正在使用Laravel Passport,并且在控制器中具有注销功能。见下文: 我现在试图为此编写一个单元测试,但是即使在注销和令牌被撤销后,用户仍然保持登录状态。我发现此方法照明\Auth\ResestGuard::注销不存在Laravel Passport,但即使此解决方案也不适用于我。我猜这可能是因为我正在使用Laravel 8。我的单元测试是这样的: 结果如下: 预期状态代码401,但收
我有一个Spring Boot REST应用程序,它分为资源服务器和Auth服务器--受无状态Oauth2安全性保护。 一切工作正常,我可以获得一个访问令牌,并使用它从我的资源服务器获得受保护的资源: 但是,我不知道如何处理注销(一旦用户决定注销,就使令牌无效)。我假设会提供一些endpoint来使令牌无效,或者我必须创建自己的endpoint来处理它?我不需要指定任何类型的令牌存储beans,所