Struts2中用拦截器判定是否已经登录

转载自:http://www.mathapply.cn/Applys/showpaper/pid/227#0-qzone-1-48969-d020d2d2a4e8d1a374a433f596ad1440

 

通常一个网站有很多资源是需要登录后才能访问的,因此需要在用户访问Action时判定是否用户登录了,如果在每一个Action里去写判定比较麻烦。在Struts2中很方面的用拦截器实现。

首先定义一个类

public class AuthorityInterceptor extends AbstractInterceptor {

@Override
public String intercept(ActionInvocation invocation) throws Exception
{
    ActionContext ctx = invocation.getInvocationContext();
    Map<String,Object> session = ctx.getSession();
    Object object = session.get("USER_ID"); //登录后在session中存入 USER_ID
    String name = ctx.getName();
    
    if(object != null || name.equals("Admin_Login")){ //session存在用户已经登录,用户访问的是登录的Action,都放行
        return invocation.invoke();
    }else{
        return Action.LOGIN; // 否则返回登录页面
    }
}

}

Struts.xml文件中,定义拦截器如下。

<package name="Admin_actions" namespace="/" extends="struts-default">

        
         <!-- 定义一个拦截器 -->  
        <interceptors>  
            <interceptor name="authority"  
                class="yycx.action.AuthorityInterceptor">  
            </interceptor>  
            <!-- 拦截器栈 -->  
            <interceptor-stack name="mydefault">  
                <interceptor-ref name="defaultStack" />  
                <interceptor-ref name="authority" />  
            </interceptor-stack>  
        </interceptors>  
 
        <!-- 定义全局Result -->  
        <global-results>  
            <!-- 当返回login视图名时,转入/login.jsp页面 -->  
            <result name="login">/Admin/login.html</result>  

        </global-results> 


<action name="Admin_*" class="yycx.action.AdminAction" method="{1}">
                 
                    <result name="loginsuc">/Admin/main.jsp</result>
                  <result name="loginfail">/Admin/loginFail.jsp</result>
                  
                  <interceptor-ref name="mydefault" />  // 对该Action进行拦截处理
</action>

</package>

实现这几部就可以进行登录判定了,是不是很方便啊?

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值