使用struts2拦截器如何实现对用户进行权限控制

使用struts2拦截器如何实现对用户进行权限控制?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

我们提供的服务有:成都做网站、成都网站制作、微信公众号开发、网站优化、网站认证、电白ssl等。为千余家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的电白网站制作公司

大多数网站会设置用户权限,如过滤非法用户,用户不登录时不能进行访问,或者设置访问的权限,如部分内容仅对VIP开放等等,这些权限的控制都可以用struts2中的拦截器来实现。

下面通过一个简单的Demo来模拟这种用户权限控制的实现流程,设定三种不同身份的用户,commen为普通用户,VIP为会员用户,还有一种admin为管理员。

先看一下Demo的整体结构:

使用struts2拦截器如何实现对用户进行权限控制

首先搭建struts2框架的开发环境(前面博客中有介绍),环境搭建完之后又再看一看如何配置struts.xml:

<?xml version="1.0" encoding="UTF-8" ?> 
 
 
  
   
    
    
    
     
     
    
   
   
   
   /Error.jsp 
   
   
   /WEB-INF/pages/index.jsp 
   
   
    
   /WEB-INF/pages/admin.jsp 
   
   
    
   /WEB-INF/pages/vipUser.jsp 
   
   
    
   /WEB-INF/pages/commen.jsp 
   
  
 

 其中,是全局的result,有很多时候一个可供很多使用,这时可以使用标签来定义全局的。执行顺序:当一个Action返回的String没有相应的与之对应,Struts2就会查找全局的,所以本次模拟测试中不符合条件被拦截的请求都会转到error.jsp。

Action类,不做处理,全部放行,让拦截器处理:

public class LoginAction implements SessionAware{ 
 @SuppressWarnings("unused") 
 private String username; 
 private Map session; 
 public void setUsername(String username) { 
  this.username = username; 
  session.put("username", username); 
 } 
 public void setSession(Map session) { 
  // TODO Auto-generated method stub 
  this.session = session; 
 } 
  
 public String AdminExecute(){ 
  return "success"; 
 } 
 public String vipExecute(){ 
  return "success"; 
 } 
 public String commenExecute(){ 
  return "success"; 
 } 
 public String execute(){ 
  return "success"; 
 } 
} 

Inteceptor(拦截器类):

public class LoginAction implements SessionAware{ 
 @SuppressWarnings("unused") 
 private String username; 
 private Map session; 
 public void setUsername(String username) { 
  this.username = username; 
  session.put("username", username); 
 } 
 public void setSession(Map session) { 
  // TODO Auto-generated method stub 
  this.session = session; 
 } 
  
 public String AdminExecute(){ 
  return "success"; 
 } 
 public String vipExecute(){ 
  return "success"; 
 } 
 public String commenExecute(){ 
  return "success"; 
 } 
 public String execute(){ 
  return "success"; 
 } 
} 

 只是 模拟拦截器的实现思路,没有持久层的数据,这里的方法是使用invocation.getProxy().getActionName()方法来获取struts.xml中配置的action名称,和用户表单提交的名称做对比,如果输入的用户名是以action名开头的,就放行,否则拦截。

登录jsp:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 
<% 
String path = request.getContextPath(); 
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; 
%> 
 
 
 
  
   
 login 
  
 
  
 

拦截后跳转页:

 
 
你的权限不足,请先升级权限...

访问资源代码:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 
<% 
String path = request.getContextPath(); 
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; 
%> 
 
 
 
  
  
 index 
  
 
  
 admin
vip
commen

其余admin.jsp等界面没有内容,只是为了区分实现跳转页面不同。

运行结果:

使用commen角色登录:

使用struts2拦截器如何实现对用户进行权限控制

点击VIP以及admin跳转链接时:

使用struts2拦截器如何实现对用户进行权限控制

关于使用struts2拦截器如何实现对用户进行权限控制问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注创新互联行业资讯频道了解更多相关知识。


网页名称:使用struts2拦截器如何实现对用户进行权限控制
链接URL:http://ybzwz.com/article/giijds.html