自定义拦截器实现用户未登录自动跳转到登录页面
程序员文章站
2022-05-28 23:46:16
...
1.自定义拦截器,没有登录跳转到login.jsp页面
public class BOSLoginInterceptor extends MethodFilterInterceptor{
@Override
protected String doIntercept(ActionInvocation invocation) throws Exception {
//获取session中的user
//--》ServletActionContext.getRequest().getSession().getAttribute("user");
User user = BOSUtils.getLoginUser();
if(user==null){
//跳转到登录页面
return "login";
}
//放行
return invocation.invoke();
}
}
2.在struts.xml中配置 不能拦截login方法
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<constant name="struts.devMode" value="false" />
<!--
<constant name="struts.objectFactory" value="spring"/>
-->
<package name="basicstruts2" extends="struts-default">
<interceptors>
<!-- 注册自定义拦截器 -->
<interceptor name="bosLoginInterceptor" class="com.it.web.interceptor.LoginInterceptor">
<!-- 指定哪些方法不需要拦截 -->
<param name="excludeMethods">login</param>
</interceptor>
<!-- 定义拦截器栈 -->
<interceptor-stack name="myStack">
<interceptor-ref name="bosLoginInterceptor"></interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref>
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="myStack"/>
<!-- 全局结果集定义 -->
<global-results>
<result name="login">/login.jsp</result>
</global-results>
</package>
</struts>
上一篇: 配置服务器jupyter远程登录