Login 在临时锁定客户之前,如何显示可用的登录尝试次数?

Login 在临时锁定客户之前,如何显示可用的登录尝试次数?,login,liferay,lockout,Login,Liferay,Lockout,我刚刚使用Liferay完成了客户网站的实现。服务很好。改进的机会之一是减少被拒之门外的客户的电话数量;我们的限额是5英镑。其目的是向下次尝试时将被锁定的客户提供警告,并建议他们改用“忘记密码”工作流 请注意,我们定义了auth.pipeline.pre=我们的类。在处理身份验证时,我可以轻松地读取用户记录,并找出尝试登录失败的次数;我不知道如何做会导致Liferay登录操作处理程序注册一个异常,该异常可由login.jsp。我怀疑这可能很困难,因为只有3个值可以从我的auth.pipeline

我刚刚使用Liferay完成了客户网站的实现。服务很好。改进的机会之一是减少被拒之门外的客户的电话数量;我们的限额是5英镑。其目的是向下次尝试时将被锁定的客户提供警告,并建议他们改用“忘记密码”工作流

请注意,我们定义了auth.pipeline.pre=我们的类。在处理身份验证时,我可以轻松地读取用户记录,并找出尝试登录失败的次数;我不知道如何做会导致Liferay登录操作处理程序注册一个异常,该异常可由login.jsp。我怀疑这可能很困难,因为只有3个值可以从我的auth.pipeline.pre=我们的类返回,并且没有一个具有所需的语义


提前感谢您的帮助。

这可以通过挂接login.jsp并覆盖liferay ui:error标记中AuthException的消息来完成,如下所示

Boolean isMaxFailedLoginAttempt = false;
PortletRequest portletRequest = (PortletRequest)request.getAttribute(JavaConstants.JAVAX_PORTLET_REQUEST);
if(SessionErrors.contains(portletRequest, AuthException.class.getName())) { 
    User u = UserLocalServiceUtil.getUserByEmailAddress(company.getCompanyId(), login); 
    if(u != null) { 
        if(u.getFailedLoginAttempts() == 5) {
        isMaxFailedLoginAttempt = true;
    } 
    }
}

if(isMaxFailedLoginAttempt) {
%>  
    <liferay-ui:error exception="<%= AuthException.class %>" message="The username or   password you entered is incorrect; another incorrect login will temporarily lock your account. Please use forgot password link to reset the password." />
<%
   } else {
%>  
   <liferay-ui:error exception="<%= AuthException.class %>" message="The username or password you entered is incorrect. Please try again." />
<%      
   }
%>
布尔值IsMaxFailedLoginAttest=false;
PortletRequest PortletRequest=(PortletRequest)request.getAttribute(JavaConstants.JAVAX_PORTLET_request);
if(SessionErrors.contains(portletRequest,AuthException.class.getName()){
用户u=UserLocalServiceUtil.getUserByEmailAddress(company.getCompanyId(),login);
如果(u!=null){
如果(u.GetFailedLoginAttents()==5){
IsMaxFailedLoginAttent=true;
} 
}
}
如果(IsMaxFailedLoginAttent){
%>  
`