2013-02-16 2 views
0

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

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

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

ответ

0

Это может быть сделано путем подключения 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." /> 
<%  
    } 
%> 

`