メソッドへovrride
のLiferay-HookがありAuthenticateByEmailAddress(...)
ます。
ログインしているユーザーのIPアドレスを取得し、それに基づいてアクセスを制限したい。
この方法でユーザー IP を取得するにはどうすればよいですか?
ServiceBuilder を使用してポートレットを作成します。
私はTomcatで働いています。
これがLiferay 6.0.6で私にとってうまくいったことです。
私のフックでは、デフォルトの login.jsp も変更しました。これは、実際にはデフォルトの login.jsp に 2 つの追加要素が追加されたものです。まず、リクエストから IP を取得します。
<%String ip = PortalUtil.getHttpServletRequest(renderRequest).getRemoteAddr();%>
追加のパラメーターを追加します。
<portlet:actionURL secure="<%= PropsValues.COMPANY_SECURITY_AUTH_REQUIRES_HTTPS || request.isSecure() %>" var="loginURL">
<portlet:param name="saveLastPath" value="0" />
<portlet:param name="struts_action" value="/login/login" />
<portlet:param name="requestIp" value="<%= ip %>" />
</portlet:actionURL>
これで、オーバーライドされた AuthenticateByEmailAddress() で、parameterMap から取得できます。
String ip = parameterMap.get("requestIp")[0];