java 拦截器 权限控制_struts2如何使用拦截器进行用户权限控制实例

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

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

先看一下Demo的整体结构:

ce1c7f531a2bca39da712c55bba16711.png

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

/p>

"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"

"http://struts.apache.org/dtds/struts-2.3.dtd">

/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:

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

login

拦截后跳转页:

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

访问资源代码:

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

index

admin

vip

commen

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

运行结果:

使用commen角色登录:

8220790a2da9032be96c188ca9235e1a.png

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

4951cc8ca2275f0504db933486e004a9.png

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值