Как я могу отобразить количество попыток входа в систему до того, как клиент будет временно заблокирован?

Я только что завершил внедрение сайта клиента с помощью Liferay. Сервис работает хорошо. Одной из возможностей для улучшения является уменьшение количества звонков от заблокированных клиентов; наше ограничение - 5. Идея состоит в том, чтобы предупредить клиентов, которые будут заблокированы при следующей попытке, и предложить им вместо этого использовать рабочий процесс "Забыли пароль".

Обратите внимание, что мы определили auth.pipeline.pre=our-class. При обработке аутентификации я могу легко прочитать пользовательскую запись и узнать, сколько попыток входа было неудачным; что я не знаю, как сделать, чтобы обработчик действий входа Liferay зарегистрировал исключение, которое может быть обнаружено с помощью login.jsp. Я подозреваю, что это может быть сложно, поскольку из моего auth.pipeline.pre=our-class класса может быть возвращено только 3 значения, и ни одно из них не имеет желаемой семантики.

Заранее благодарю за любую помощь.

1 ответ

Это можно сделать, подключив login.jsp и переопределив сообщение для AuthException в теге liferay-ui:error, как показано ниже.

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." />
<%      
   }
%>

`

Другие вопросы по тегам