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>