struts.xml
<package name="admin" extends="struts-default" namespace="/admin">
<interceptors>
<interceptor class="interceptor.LoginInterceptor" name="loginInterceptor"/>
<interceptor-stack name="loginStack">
<interceptor-ref name="loginInterceptor"/>
<interceptor-ref name="defaultStack"/>
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="loginStack"/>
<global-results>
<result name="login">/login.jsp</result>
</global-results>
<action name="index">
<result>/WEB-INF/admin/index.jsp</result>
</action>
actions
.
.
</package>
<package name="secure" extends="struts-default" namespace="/secure">
<interceptors>
<interceptor class="interceptor.LoginInterceptor" name="loginInterceptor"/>
<interceptor-stack name="loginStack">
<interceptor-ref name="loginInterceptor"/>
<interceptor-ref name="defaultStack"/>
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="loginStack"/>
<global-results>
<result name="login">/login.jsp</result>
</global-results>
<action name="index">
<result>/WEB-INF/admin/index.jsp</result>
</action>
<action class="actions.LoginAction" name="authenticateUser">
<!-- generate dynamically for success-->
<result name="input">/login.jsp</result>
<result name="error">/login.jsp</result>
</action>
</package>
これは私のインターセプターです
public String intercept(ActionInvocation invocation) throws Exception {
final ActionContext context = invocation.getInvocationContext();
HttpServletRequest request = (HttpServletRequest) context.get(HTTP_REQUEST);
HttpSession session = request.getSession(true);
Object user = session.getAttribute("user");
if (user == null) {
String loginAttempt = request.getParameter("loginAttempt");
if(!StringUtils.isEmpty(loginAttempt)){
return invocation.invoke();
}
return "login";
} else {
// Check for user role here
// and redirect to action of specific namespace
return invocation.invoke();
}
}
間違って質問してしまい申し訳ありません。
私のアプリケーションには、Admin と Customer の 2 種類のユーザーがいます。それらを区別し、役割に基づいて特定の名前空間アクションに動的にリダイレクトしたいと考えています。
現在、管理者用の認証機能のみがあります。
私はこの解決策を思いつきました。
しかし、リクエスト URL を特定の namespece のアクションにマップする方法がわかりません。ロールに基づいて、顧客の場合は「セキュア」、管理者の場合は「管理者」です。それ以外の場合は、グローバル例外を表示します。
管理者用のすべての JSP は管理者フォルダー内にあり、顧客用のすべての JSP は WEF-INF フォルダーの顧客フォルダー内にあります。
また、まだ記入しなければならないが、これを行う方法がわからないコメントをいくつか指定しました。ロールの確認については知っていますが、リダイレクトについては何をすべきかわかりません。
私はまだこれを実装していませんでした。しかし、私はこの考えに行き着きました。私が考えていることでさえ、可能か不可能か。より良い解決策があれば、教えてください。