1

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 角色我知道,但对于重定向不知道该怎么做。

我还没有实现这个。但我是带着这个想法而来的。甚至我认为可能或不可能。如果有更好的解决方案可以告诉我。

4

0 回答 0