struts.xml如下:
<struts>
<package name="struts2" extends="struts-default">
<interceptors>
<!--定义权限验证拦截器-->
<interceptor name="myAuthorization"
class="com.pb.struts2.interceptor.AuthorizationInterceptor">
</interceptor>
 <!--定义拦截器栈-->
<interceptor-stack name="myStack">
<interceptor-ref name="defaultStack"/>
<interceptor-ref name="myAuthorization"/>
</interceptor-stack>
</interceptors>

<!-- 省略-->



<action name="security" >
<result>/WEB-INF/page/security.jsp</result>
<interceptor-ref name="myStack"/>
</action>
</package>
</struts>

解决方案 »

  1.   

    security.jsp中简单显示
        存放重要机密信息,未经登录直接访问,将导致严重后果。
      

  2.   

    AuthorizationInterceptor.java类如下:public class AuthorizationInterceptor extends AbstractInterceptor { public String intercept(ActionInvocation invocation) throws Exception {
    //获取session中保持的用户信息
    Map session = invocation.getInvocationContext().getSession();
    User user = (User)session.get("user");
    if (user == null) {
    //如果用户尚未登录,返回到登录页面
    return Action.LOGIN;
    } else {
    //如果用户已经登录,继续执行剩余的拦截器和Action
    return invocation.invoke();
    }
    }
    }
      

  3.   

    实体类User.java:public class User { private String username;
    private String password;
    public String getUsername() {
    return username;
    }
    public void setUsername(String username) {
    this.username = username;
    }
    public String getPassword() {
    return password;
    }
    public void setPassword(String password) {
    this.password = password;
    }
    }
      

  4.   

    其中还有登陆的验证,如果登陆成功,在session中添加user属性为某用户名我的问题是:
    AuthorizationInterceptor.java类中return Action.LOGIN是什么意思?
    返回到哪里去了
    是不是写错了,应该是返回一个网址login.action,然后跳转的这个网址
    否则Action是com.opensymphony.xwork2.Action类,Action.LOGIN是个什么东西?静态常量?struts核心不可能有个LOGIN常量吧?奇怪的是return Action.LOGIN这一行eclipse居然没报错,返回字符串应该写成 "Action.LOGIN" 有引号啊前面struts.xml的package子标签下省略了一部分如下 <!-- 定义全局结果 -->
    <global-results>
    <result name="login" type="redirect">login.html</result>
    </global-results>


    <action name="login" class="com.pb.struts2.action.LoginAction">
    <result name="success">success.jsp</result>
    <result name="error">error.jsp</result>
    </action>
    <action name="security" >
    <result>/WEB-INF/page/security.jsp</result>
    <interceptor-ref name="myStack"/>
    </action>
      

  5.   

    没有写错,action.LOGIN是一个常量、、、他的值是“login”
    根据这个 <result name="login" type="redirect">login.html</result>可知,当没有登录的时候返回到login.html