如何以编程方式从 magnolia cms 注销

How to logout programmatically from magnolia cms

我想为注销用户创建自定义 REST。我用一种方法创建了基于 jax-rs 的端点定义 /logout:

@Path("/test")
public class MyEndpoint<D extends EndpointDefinition>  extends AbstractEndpoint<D> {

    @Path("/logout")
    @GET
    @Produces(MediaType.APPLICATION_JSON)
    public void logout() {
        //how to logout user here?
    }
}

我应该用什么代码代替 //how to logout user here? 才能使其正常工作?

您可以注入以下组件并从中触发注销。

info.magnolia.context.UserContext

我根据 info.magnolia.cms.security.LogoutFilter

创建了可行的解决方案
@Path("/logout")
@GET
@Produces(MediaType.APPLICATION_JSON)
public void logout(@Context HttpServletRequest request) {
    info.magnolia.context.Context ctx = MgnlContext.getInstance();
    if (ctx instanceof UserContext) {
        AuditLoggingUtil.log((UserContext) ctx);
        ((UserContext) ctx).logout();
    }

    if (request.getSession(false) != null) {
        request.getSession().invalidate();
    }
}