0

Liferayを使用して顧客の Web サイトの実装を完了しました。サービスはうまくいっています。改善の機会の 1 つは、締め出された顧客からの電話の数を減らすことです。制限は 5 です。これは、次回の試行でロックアウトされる顧客に警告を提供し、代わりに「パスワードを忘れた」ワークフローを使用するよう提案することを目的としています。

auth.pipeline.pre=our-classを定義したことに注意してください。認証を処理するとき、ユーザー レコードを簡単に読み取ることができ、試行されたログインの失敗回数を確認できます。どうすればLiferayログインアクションハンドラーがlogin.jspで検出できる例外を登録するのかわかりません。auth.pipeline.pre=our-classクラスから返される値は 3 つしかなく、いずれも目的のセマンティックを持っていないため、これは難しいと思われます。

助けてくれてありがとう。

4

1 に答える 1

0

これは、以下のように 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." />
<%      
   }
%>

`

于 2013-02-19T06:58:39.917 に答える