Struts2实现未登录进行权限拦截 一直没起作用,懂得帮忙看看。

我想实现的就是除了登录页面,访问其他的都需要登录后才能访问,各位慕课网的朋友帮忙看看代码哪里有问题。谢谢!!


LoginInterceptor.java

package com.yeka.oa.interceptor;

import java.util.Map;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.MethodFilterInterceptor;
import com.yeka.oa.entity.SysEmployee;

@SuppressWarnings("serial")
public class LoginInterceptor extends MethodFilterInterceptor  {

	@SuppressWarnings("unchecked")
	@Override
	protected String doIntercept(ActionInvocation invocation) throws Exception {
		ActionContext context = invocation.getInvocationContext();
		//通过ActionContext获取session的信息,以Map形式返回
		Map session = context.getSession();
		//获取容器里面的username值,如果存在说明该用户已经登录,让他执行操作,如果未登录让他进行登录
		SysEmployee user = (SysEmployee) session.get("user");
		if(user!=null){
			invocation.invoke();
		}
		context.put("nologin", "对不起,你没有登录,不能进行该操作");
		return "login";

	}
}

struts.xml配置

<!-- 配置拦截器 -->
 <package name="my-default" extends="struts-default">
     <interceptors>
         <!-- 配置未登录进行操作的拦截器 -->
         <interceptor name="loginInterceptor" class="com.struts2.interceptor.LoginInterceptor">
         </interceptor>
         <!-- 重新封装一个默认的拦截器栈 -->
         <interceptor-stack name="myDefaultStack">
               <interceptor-ref name="loginInterceptor" />
               <interceptor-ref name="defaultStack" />
         </interceptor-stack>
     </interceptors>
     <!-- 为这个包设置默认的拦截器栈 -->
     <default-interceptor-ref name="myDefaultStack" />
     <!-- 设置全局的返回值 -->
     <global-results>
          <result name="login" type="redirect">login.jsp</result>
     </global-results>
 </package>


qq_脚本
浏览 2495回答 1
1回答

出任CEO迎娶白富美

设置全局的返回值应该是 /login.jsp
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java