gpt4 book ai didi

java - Liferay - PreLoginAction - 阻止用户登录

转载 作者:行者123 更新时间:2023-11-28 22:51:35 25 4
gpt4 key购买 nike

我使用基于 Liferay 的网站并尝试实现登录 Hook ,以防止用户在某些情况下登录。我想让它尽可能简单,例如:

    @Override
public void run(HttpServletRequest request, HttpServletResponse response) throws ActionException
{
if (condition)
{
//redirect to login page, send a message back but just don't let the user login
//but don't block or ban him either.
}
}

它必须看起来像一个错误的密码错误,但它必须在门​​户端,甚至在用户登录之前(因此 PreLoginAction 类)

编辑:好的,我使用注销和重定向方法返回到登录页面。但我仍然想生成一条错误消息。我这样试过

    @Override
public void run(HttpServletRequest request, HttpServletResponse response) throws ActionException
{
if (condition)
{
SessionErrors.add(request, "error");
response.sendRedirect("/c/portal/logout");
}
}

对于 login.jsp,我添加了第一行,但我猜它不像登录操作那样工作。没有错误信息显示

<liferay-ui:error key="error" message="this-account-has-been-locked" />
<liferay-ui:error exception="<%= AuthException.class %>" message="authentication-failed" />
<liferay-ui:error exception="<%= CompanyMaxUsersException.class %>" message="unable-to-login-because-the-maximum-number-of-users-has-been-reached" />
<liferay-ui:error exception="<%= CookieNotSupportedException.class %>" message="authentication-failed-please-enable-browser-cookies" />
<liferay-ui:error exception="<%= NoSuchUserException.class %>" message="authentication-failed" />
<liferay-ui:error exception="<%= PasswordExpiredException.class %>" message="your-password-has-expired" />
<liferay-ui:error exception="<%= UserEmailAddressException.class %>" message="authentication-failed" />
<liferay-ui:error exception="<%= UserLockoutException.class %>" message="this-account-has-been-locked" />
<liferay-ui:error exception="<%= UserPasswordException.class %>" message="authentication-failed" />
<liferay-ui:error exception="<%= UserScreenNameException.class %>" message="authentication-failed" />

还有别的办法吗?我也试过这条线

request.getSession().setAttribute("loginError", "failure message");

并尝试读取 jsp 中的 ${loginError},但它也不起作用。

最佳答案

您可以简单地将用户重定向到 response.redirect("/c/portal/logout"),这实际上会注销用户并将他重定向到主页。

如果您想自己以编程方式注销用户然后重定向,可以使用以下代码:

    @Override
public void run(HttpServletRequest request, HttpServletResponse response) throws ActionException {

if (condition) {

// Whatever here ...

// Logout the user.
request.getSession().invalidate();

// Redirect
response.redirect(<YOUR_PAGE>)
}
}

关于java - Liferay - PreLoginAction - 阻止用户登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38301981/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com