如何以编程方式从 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();
}
}
我想为注销用户创建自定义 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();
}
}