【问题标题】:Quarkus HTTP authentication logoutQuarkus HTTP 身份验证注销
【发布时间】:2021-10-08 21:44:34
【问题描述】:

我目前正在使用 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)并且重定向工作正常。但是会话仍然存在。

我该如何解决?

感谢您的帮助,

【问题讨论】:

    标签: quarkus


    【解决方案1】:

    经过多次研究和尝试,我发现一个解决方案是使用 Javascript 使 cookie 无效:

    document.cookie = "MyCookieName=; Max-Age=0";
    

    这会使 cookie 无效并重定向到登录页面。

    【讨论】:

      猜你喜欢
      • 2011-05-08
      • 2017-11-16
      • 2015-05-25
      • 2016-05-14
      • 2010-10-01
      • 2011-06-03
      • 2010-11-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多