使用Filter完成一个简单的权限模型

本文介绍了一个基于Filter的简单权限模型的设计与实现过程,包括管理权限的增删改查及访问控制,通过权限验证确保用户只能访问其拥有权限的资源。

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

1.使用Filter完成一个简单的权限模型:
1).需求:

①.管理权限
>查看某人的权限
>修改某人的权限
②. 对访问进行权限控制:有权限则可以访问,否则提示:没有对应的权限,请返回
2).实现:
①.管理权限:
>封装权限信息:Authority
Authority{
//显示到页面上的权限的名字
private String displayName;
//权限对应的URL地址:一个权限对应着一个URL,例如Article_1 ->/app_4/article1.jsp
private String url;
}
>封装用户信息:User
User{
private String username;
private List<Authority> authorities;
//..
}
>创建一个UserDao:
User get(String username);
void update (String username,List<Authority>);

>页面
authority-manager.jsp:
*有一个text文本框,供输入username,提交后,使用checkbox显示当前用户所有的权限的信息。
*检查request中是否有user信息,若有,则显示
XXX的权限为:对应的权限的checkbox打上对号。提示,页面上需要通过两层循环的方式来筛选出被选择的权限

>Servlet
authority-manager.jsp 提交表单后:获取表单的请求参数:username,在根据username获取User信息,把user放入到
request中,转发到authority-manager.jsp。

authority-manager.jsp 修改权限的表单提交后:获取请求参数:username,authory(多选);把选项封装为List;调用
UserDao的update()方法实现权限的修改;重定向到authority-manager.jsp 

②.对访问进行权限控制:
>使用Filter进行权限的过滤:检验用户是否有权限,若有,则直接响应目标页面;若没有重定向到403.jsp
*403.jsp
<h4>
没有对应的权限
请<a href="">返回</a>
</h4>
*使用Filter如何进行过滤:
-获取ServletPath,类似于/app_3/article1.jsp
-在用户已经登录(可使用用户是否登录的过滤器)的情况下,获取用户信息。session.getAttribute(“user”)
-在获取用户所具有的权限的信息:List<Authority>
-检验用户是否有请求 servletPath的权限:遍历
-若有权限,则响应
-若没权限,则重定向到403.jsp
*others:
-用户若登录,需要把用户信息(User 对象)放到HttpSession中。
-在检验权限之前,需要判断用户是否已经登录。

2.权限操作总结:
1)MVC设计模式实现权限管理:


-页面完全使用JSTL和EL
-Servlet受理请求,调用方法,转发或重定向页面
-面向对象的基本逻辑:Authority,User分别封装了权限和User信息

2).equals()方法的使用:List中是否含有指定的元素使用的是equals方法进行比较。

	//		-检验用户是否有请求 servletPath的权限:遍历
			Authority authority=new Authority(null, servletPath);
			if(authorities.contains(authority)){
				//		-若有权限,则响应
				filterChain.doFilter(request, response);
				return;
			}	

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值