struts2 使用拦截器 实现用户权限的验证

本文介绍了如何在Struts2中使用拦截器进行用户权限验证。首先,创建了一个名为AuthorityInterceptor的拦截器类,检查session中的用户名是否为'weiqingli',如果符合条件则允许访问,否则返回登录页面。接着,在struts.xml配置文件中定义了拦截器及拦截器堆栈,并在需要验证身份的action中应用。当用户未登录或用户名不正确时,系统会显示提示信息并重定向到登录页面。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、编写实现拦截验证的类

        

     package iterceptor;

import java.util.Map;

import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;

public class AuthorityInterceptor extends AbstractInterceptor {
 private static final long serialVersionUID = 1L;

 // 拦截Action处理的拦截方法
 public String intercept(ActionInvocation invocation) throws Exception {
  // 取得请求相关的ActionContext实例
  ActionContext ctx = invocation.getInvocationContext();
  Map session = ctx.getSession();
  // 取出名为user的Session属性
  String user = (String) session.get("username");
  
//  try{
//  System.out.println("得到的用户名是:  "+user);
//  }catch(Exception ex){
//   System.out.println("异常: "+ex.toString());
//  }
  
  // 如果没有登陆,或者登陆所用的用户名不是scott,都返回重新登陆
  if (user != null && user.equals("weiqingli")) {
   return invocation.invoke();
  }
  // 没有登陆,将服务器提示设置成一个HttpServletRequest属性
  ctx.put("tip", "您还没有登陆,请输入scott,tiger登陆系统");
  // 直接返回login的逻辑视图
  return Action.LOGIN;
 }
}

 

2、在struts.xm 配置

    <!-- 用户拦截器定义在该元素下 -->
 <interceptors>
 <!-- 定义了一个名为checkUserLogin的拦截器 -->
 <interceptor name="checkUserLogin" class="iterceptor.AuthorityInterceptor"/>
 

<!--为了在action里面的方便引用,做成拦截器堆栈  -->
 <interceptor-stack name="checkUserLogin_stack">
  <!-- 应用默认拦截器堆栈    一定要有 -->
   <interceptor-ref name="defaultStack" />
   <!-- 应用自定义拦截器 -->
   <interceptor-ref name="checkUserLogin" />
 </interceptor-stack>
 </interceptors>

 

 

3、在需要验证身份的action里,使用拦截器

 

 <!-- 需要登录权限的页面 -->
  <action name="main" class="com.qili.Main" method="main">

   <!-- 使用自定义拦截器 -->
    <interceptor-ref name="checkUserLogin_stack"></interceptor-ref>
   <result name="success" type="freemarker">/ftl/main.html</result>
  </action>

 

4、配全局结果,结果为 login的转正,都指向登录页

 

  <global-results>
   <result name="login" type="redirect">login.jsp</result>
  </global-results>

 

 

5、实现下载   

    下载   http://download.youkuaiyun.com/source/2227130

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值