Filter(第四节)
来源:互联网 发布:网络十大公会 编辑:程序博客网 时间:2024/06/14 02:13
使用 Filter 完成一个简单的权限模型:
1). 需求:
①. 管理权限
> 查看某人的权限
> 修改某人的权限
②. 对访问进行权限控制: 有权限则可以访问, 否则提示: 没有对应的权限, 请 返回
2). 实现:
②. 对访问进行权限控制:
> 使用 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 中.
- 在检验权限之前, 需要判断用户是否已经登录.
①. 管理权限:
> 封装权限信息: Authority
Authority{
//显示到页面上的权限的名字
private String displayName;
//权限对应的 URL 地址: 已权限对应着一个 URL, 例如 Article_1 -> /app_4/article1.jsp
private String url;
}
> 封装用户信息: User
User{
private String username;
private List<Autority> authorities;
//...
}
> 创建一个 UserDao:
User get(String username);
void update(String username, List<Autority>);
> 页面
authority-manager.jsp:
* 有一个 text 文本框, 供输入 username, 提交后, 使用 checkbox 显示当前用户所有的权限的信息.
<form action="/day_40/AuthorityServlet?method=get" method="post">
Name: <input name="name" type="text"/>
<input type="submit" value="Submit"/>
</form>
* 检查 request 中是否有 user 信息, 若有, 则显示
xxx 的权限为: 对应的权限的 checkbox 打上对号. 提示, 页面上需要通过两层循环的方式来筛选出被选择的权限.
<form action="/day_40/AuthorityServlet?method=get" method="post">
Name: <input name="name" type="text"/>
<input type="submit" value="Submit"/>
</form>
<br><br>
AAA 的权限是:
<br><br>
<form action="/day_40/AuthorityServlet?method=update" method="post">
<!-- 使用隐藏域来保存用户的 name -->
<input name="name" type="hidden" value="AAA"/>
<input type="checkbox" name="authority" value="/app_4/article1.jsp"
checked="checked"/>Article_1
<br><br>
<input type="checkbox" name="authority" value="/app_4/article2.jsp"
checked="checked"/>Article_2
<br><br>
<input type="checkbox" name="authority" value="/app_4/article3.jsp"
checked="checked"/>Article_3
<br><br>
<input type="checkbox" name="authority" value="/app_4/article4.jsp" />Article_4
<br><br>
<input type="submit" value="Submit"/>
</form>
> Servlet
authority-manager.jsp 提交表单后 get 方法: 获取表单的请求参数: username, 再根据 username 获取 User 信息. 把 user 放入到
request 中, 转发到 authority-manager.jsp.
authority-manager.jsp 修改权限的表单提交后 update 方法: 获取请求参数: username, authory(多选); 把选项封装为 List; 调用
UserDao 的 update() 方法实现权限的修改; 重定向到 authority-manager.jsp
1). 需求:
①. 管理权限
> 查看某人的权限
> 修改某人的权限
②. 对访问进行权限控制: 有权限则可以访问, 否则提示: 没有对应的权限, 请 返回
2). 实现:
②. 对访问进行权限控制:
> 使用 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 中.
- 在检验权限之前, 需要判断用户是否已经登录.
①. 管理权限:
> 封装权限信息: Authority
Authority{
//显示到页面上的权限的名字
private String displayName;
//权限对应的 URL 地址: 已权限对应着一个 URL, 例如 Article_1 -> /app_4/article1.jsp
private String url;
}
> 封装用户信息: User
User{
private String username;
private List<Autority> authorities;
//...
}
> 创建一个 UserDao:
User get(String username);
void update(String username, List<Autority>);
> 页面
authority-manager.jsp:
* 有一个 text 文本框, 供输入 username, 提交后, 使用 checkbox 显示当前用户所有的权限的信息.
<form action="/day_40/AuthorityServlet?method=get" method="post">
Name: <input name="name" type="text"/>
<input type="submit" value="Submit"/>
</form>
* 检查 request 中是否有 user 信息, 若有, 则显示
xxx 的权限为: 对应的权限的 checkbox 打上对号. 提示, 页面上需要通过两层循环的方式来筛选出被选择的权限.
<form action="/day_40/AuthorityServlet?method=get" method="post">
Name: <input name="name" type="text"/>
<input type="submit" value="Submit"/>
</form>
<br><br>
AAA 的权限是:
<br><br>
<form action="/day_40/AuthorityServlet?method=update" method="post">
<!-- 使用隐藏域来保存用户的 name -->
<input name="name" type="hidden" value="AAA"/>
<input type="checkbox" name="authority" value="/app_4/article1.jsp"
checked="checked"/>Article_1
<br><br>
<input type="checkbox" name="authority" value="/app_4/article2.jsp"
checked="checked"/>Article_2
<br><br>
<input type="checkbox" name="authority" value="/app_4/article3.jsp"
checked="checked"/>Article_3
<br><br>
<input type="checkbox" name="authority" value="/app_4/article4.jsp" />Article_4
<br><br>
<input type="submit" value="Submit"/>
</form>
> Servlet
authority-manager.jsp 提交表单后 get 方法: 获取表单的请求参数: username, 再根据 username 获取 User 信息. 把 user 放入到
request 中, 转发到 authority-manager.jsp.
authority-manager.jsp 修改权限的表单提交后 update 方法: 获取请求参数: username, authory(多选); 把选项封装为 List; 调用
UserDao 的 update() 方法实现权限的修改; 重定向到 authority-manager.jsp
阅读全文
0 0
- Filter(第四节)
- 第四节 常用组件 之 Filter 优化
- Filter(第二节)
- filter()
- 第四章 第四节:子查询 (Subquery)
- 第四十二章 SpringBoot注册Servlet/Filter/Listener
- Python入门 第四天(函数式编程、map、reduce、filter、排序函数、函数返回函数、闭包、匿名函数lambda)
- 创建一个filter实例(transform filter)
- 创建一个filter实例(transform filter)
- Filter 学习(1) 防盗链 Filter。
- 创建一个filter实例(transform filter)
- Filter三(Filter栈以及FilterMapping)
- 第一章 --- 第四节(1~3小结)
- 第四节(Meta的应用)
- 第四节hellocpp整体框架(三)
- HTML第四节(Web设计基础)
- 过滤器(Filter)
- PHP 过滤器(Filter)
- Centos 7.4 安装 Redis 全过程
- vim编译器(2):按键说明
- [SDOI2010]魔法猪学院(Astar 优化K短路)
- 算法总结JS版(一)—— 冒泡排序(Bubble Sort)
- 用C实现C编译器(一)
- Filter(第四节)
- Junit单元测试避免死循环
- 深入Struts2学习(三)
- 基于Java和websocket的在线聊天程序(可群发和选择用户)
- Binary Search:34. Search for a Range
- C语言中的宏
- 数组中的strlen和sizeof
- GIT的安装及上传代码到码云
- 白话解析:一致性哈希算法 consistent hashing