Flask接口签名sign原理与实例代码浅析
309
2023-05-16
struts2如何使用拦截器进行用户权限控制实例
大多数网站会设置用户权限,如过滤非法用户,用户不登录时不能进行访问,或者设置访问的权限,如部分内容仅对VIP开放等等,这些权限的控制都可以用struts2中的拦截器来实现。
下面通过一个简单的Demo来模拟这种用户权限控制的实现流程,设定三种不同身份的用户,commen为普通用户,VIP为会员用户,还有一种admin为管理员。
先看一下Demo的整体结构:
首先搭建struts2框架的开发环境(前面博客中有介绍),环境搭建完之后又再看一看如何配置struts.xml:
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
其中,
Action类,不做处理,全部放行,让拦截器处理:
public class LoginAction implements SessionAware{
@SuppressWarnings("unused")
private String username;
private Map
public void setUsername(String username) {
this.username = username;
session.put("username", username);
}
public void setSession(Map
// 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
public void setUsername(String username) {
this.username = username;
session.put("username", username);
}
public void setSession(Map
// 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+"/";
%>
拦截后跳转页:
访问资源代码:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath BIYdUsVcNp= request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
其余admin.jsp等界面没有内容,只是为了区分实现跳转页面不同。
运行结果:
使用commen角色登录:
点击VIP以及admin跳转链接时:
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~