1.防止用户没有登录即可访问其他页面

1.1>从session中判断用户是否登陆 ServletActionContext.getRequest().getSession();以此为依据是否放行

package com.hdh.bos.interceptor;

import com.hdh.bos.entity.User;
import com.hdh.bos.utils.BOSUtils;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.ActionProxy;
import com.opensymphony.xwork2.interceptor.MethodFilterInterceptor;
/**
 * 自定义的拦截器,实现用户未登录自动跳转到登录页面
 * @author hdh
 *
 */
public class BOSLoginInterceptor extends MethodFilterInterceptor{
    //拦截方法
    protected String doIntercept(ActionInvocation invocation) throws Exception {
        ActionProxy proxy = invocation.getProxy();
        String actionName = proxy.getActionName();
        String namespace = proxy.getNamespace();
        String url = namespace + actionName;
        System.out.println(url);
        //从session中获取用户对象
        User user = BOSUtils.getLoginUser();
        if(user == null){
            //没有登录,跳转到登录页面
            return "login";
        }
        //放行
        return invocation.invoke();
    }
}

 

2.注册自定义拦截器 

<!--注册自定义拦截器 -->
            <interceptor name="loginInterception"
                class="com.hdh.bos.interceptor.BOSLoginInterceptor">
                <!--指定不需要拦截的 -->
                <param name="excludeMethods">login</param>
            </interceptor>
            
            <!--定义拦截器栈 -->
            <interceptor-stack name="mystack">
                <interceptor-ref name="loginInterception"></interceptor-ref>
                <interceptor-ref name="defaultStack"></interceptor-ref>
            </interceptor-stack>
        </interceptors>

 

 

3.设置默认拦截器

<!-- 设置为默认拦截器 -->
        <default-interceptor-ref name="mystack"></default-interceptor-ref>

 

posted on 2019-04-08 08:04  忆夏KhaZix  阅读(216)  评论(0编辑  收藏  举报