Quarkus HTTP 身份验证注销
Quarkus HTTP authentication logout
我目前正在使用 Quarkus 使用 http 表单身份验证开发应用程序。在阅读“基于表单的身份验证”页面 (https://quarkus.io/guides/security-built-in-authentication) 后,我遇到了注销阶段的问题。该文档没有提到任何注销当前会话的选项。
由于 Quarkus 内部使用 Vert.x,我尝试了以下操作:
@Path("/auth")
public class AuthController {
@LoggerName("AuthController")
Logger log;
@ConfigProperty(name = "quarkus.http.auth.form.cookie-name")
String COOKIE_NAME;
@ConfigProperty(name = "quarkus.http.auth.form.location-cookie")
String REDIRECT_COOKIE_NAME;
@ConfigProperty(name = "quarkus.http.auth.form.login-page")
String LOGIN_PAGE;
@GET
@Path("/logout")
public void logout(@Context RoutingContext ctx) {
var c1 = ctx.removeCookie(COOKIE_NAME);
var c2 = ctx.removeCookie(REDIRECT_COOKIE_NAME);
log.info(String.format("c1 = %s, c2 = %s", c1.getName(), c2.getName()));
ctx.redirect(LOGIN_PAGE);
}
}
这并没有像预期的那样工作。 log.info 记录良好 ([AuthController] (executor-thread-0) c1 = MyCookieName, c2 = quarkus-redirect-location
) 并且重定向工作正常。但是会话仍然存在。
我该如何修复它?
感谢您的帮助,
经过多次研究和尝试,我找到的解决方案是使用 Javascript 使 cookie 无效:
document.cookie = "MyCookieName=; Max-Age=0";
这会使 cookie 无效并重定向到登录页面。
我目前正在使用 Quarkus 使用 http 表单身份验证开发应用程序。在阅读“基于表单的身份验证”页面 (https://quarkus.io/guides/security-built-in-authentication) 后,我遇到了注销阶段的问题。该文档没有提到任何注销当前会话的选项。
由于 Quarkus 内部使用 Vert.x,我尝试了以下操作:
@Path("/auth")
public class AuthController {
@LoggerName("AuthController")
Logger log;
@ConfigProperty(name = "quarkus.http.auth.form.cookie-name")
String COOKIE_NAME;
@ConfigProperty(name = "quarkus.http.auth.form.location-cookie")
String REDIRECT_COOKIE_NAME;
@ConfigProperty(name = "quarkus.http.auth.form.login-page")
String LOGIN_PAGE;
@GET
@Path("/logout")
public void logout(@Context RoutingContext ctx) {
var c1 = ctx.removeCookie(COOKIE_NAME);
var c2 = ctx.removeCookie(REDIRECT_COOKIE_NAME);
log.info(String.format("c1 = %s, c2 = %s", c1.getName(), c2.getName()));
ctx.redirect(LOGIN_PAGE);
}
}
这并没有像预期的那样工作。 log.info 记录良好 ([AuthController] (executor-thread-0) c1 = MyCookieName, c2 = quarkus-redirect-location
) 并且重定向工作正常。但是会话仍然存在。
我该如何修复它?
感谢您的帮助,
经过多次研究和尝试,我找到的解决方案是使用 Javascript 使 cookie 无效:
document.cookie = "MyCookieName=; Max-Age=0";
这会使 cookie 无效并重定向到登录页面。