Liferay 7登录后调整用户session,如何获取session?
adjust the user session after logging in in Liferay 7, how to get the session?
在liferay 7中,我试图在登录成功后调整用户会话。我曾经为此构建了一个钩子,并且它曾经工作得很好。但是现在我无法检索会话来检查属性。
@Component(immediate = true, property = { "key=login.events.post" }, service = LifecycleAction.class)
public class TestSessionAdjustAction implements LifecycleAction {
@Override
public void processLifecycleEvent(LifecycleEvent lifecycleEvent) throws ActionException {
final HttpSession session = lifecycleEvent.getSession();
final TestAccessToken token = (TestAccessToken) session.getAttribute(TestWebkeys.TEST_ACCESS_TOKEN);
if (token != null) {
TestSessionUtil.put(token.getRefreshToken(), session);
}
}
}
代码在以下位置抛出空指针 ex:
session.getAttribute(TestWebkeys.TEST_ACCESS_TOKEN);
四处寻找我资助用
替换我有问题的行
final HttpSession session = lifecycleEvent.getRequest().getSession();
解决问题。 (我希望这对某些人有所帮助..因为,我花了一段时间)
似乎 lifecycleEvent 在它的 class 中有几个构造函数,这里使用的那个,在我的方法之前,将会话设置为 null...
public class LifecycleEvent {
public LifecycleEvent() {
this(null, null, null, null);
}
public LifecycleEvent(
HttpServletRequest request, HttpServletResponse response) {
this(null, request, response, null);
}
public LifecycleEvent(HttpSession session) {
this(null, null, null, session);
}
public LifecycleEvent(String[] ids) {
this(ids, null, null, null);
}
public LifecycleEvent(
String[] ids, HttpServletRequest request, HttpServletResponse response,
HttpSession session) {
_ids = ids;
_request = request;
_response = response;
_session = session;
}
public String[] getIds() {
return _ids;
}
public HttpServletRequest getRequest() {
return _request;
}
public HttpServletResponse getResponse() {
return _response;
}
public HttpSession getSession() {
return _session;
}
private final String[] _ids;
private final HttpServletRequest _request;
private final HttpServletResponse _response;
private final HttpSession _session;}
在liferay 7中,我试图在登录成功后调整用户会话。我曾经为此构建了一个钩子,并且它曾经工作得很好。但是现在我无法检索会话来检查属性。
@Component(immediate = true, property = { "key=login.events.post" }, service = LifecycleAction.class)
public class TestSessionAdjustAction implements LifecycleAction {
@Override
public void processLifecycleEvent(LifecycleEvent lifecycleEvent) throws ActionException {
final HttpSession session = lifecycleEvent.getSession();
final TestAccessToken token = (TestAccessToken) session.getAttribute(TestWebkeys.TEST_ACCESS_TOKEN);
if (token != null) {
TestSessionUtil.put(token.getRefreshToken(), session);
}
}
}
代码在以下位置抛出空指针 ex:
session.getAttribute(TestWebkeys.TEST_ACCESS_TOKEN);
四处寻找我资助用
替换我有问题的行final HttpSession session = lifecycleEvent.getRequest().getSession();
解决问题。 (我希望这对某些人有所帮助..因为,我花了一段时间)
似乎 lifecycleEvent 在它的 class 中有几个构造函数,这里使用的那个,在我的方法之前,将会话设置为 null...
public class LifecycleEvent {
public LifecycleEvent() {
this(null, null, null, null);
}
public LifecycleEvent(
HttpServletRequest request, HttpServletResponse response) {
this(null, request, response, null);
}
public LifecycleEvent(HttpSession session) {
this(null, null, null, session);
}
public LifecycleEvent(String[] ids) {
this(ids, null, null, null);
}
public LifecycleEvent(
String[] ids, HttpServletRequest request, HttpServletResponse response,
HttpSession session) {
_ids = ids;
_request = request;
_response = response;
_session = session;
}
public String[] getIds() {
return _ids;
}
public HttpServletRequest getRequest() {
return _request;
}
public HttpServletResponse getResponse() {
return _response;
}
public HttpSession getSession() {
return _session;
}
private final String[] _ids;
private final HttpServletRequest _request;
private final HttpServletResponse _response;
private final HttpSession _session;}