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();
}
}
对不起我的错误我问错了。
我的应用程序管理员和客户中有两种用户。我想区分它们并根据角色动态重定向到特定的命名空间操作。
目前只有管理员身份验证功能。
我想出了这个解决方案。
但我不知道如何根据角色将请求 url 映射到特定名称规范的操作,无论是对客户的“安全”还是对管理员的“管理员”。否则显示全局异常。
admin 的所有 JSP 都位于 admin 文件夹中,而 customer 则位于 WEF-INF 文件夹中的 customer 文件夹中。
我还指定了一些我仍然需要填写但不知道该怎么做的评论。对于 cheking 角色我知道,但对于重定向不知道该怎么做。
我还没有实现这个。但我是带着这个想法而来的。甚至我认为可能或不可能。如果有更好的解决方案可以告诉我。