1.防止用戶沒有登錄即可訪問其他頁面 1.1>從session中判斷用戶是否登陸 ServletActionContext.getRequest().getSession();以此為依據是否放行 2.註冊自定義攔截器 3.設置預設攔截器 ...
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>