Java Web入门之用Filter实现用户权限的管理
来源:互联网 发布:淘宝开放平台api 编辑:程序博客网 时间:2024/06/05 05:26
很简单的用户权限管理,就是根据用户权限对不同的url进行过滤。
设定登陆成功在session里写入super属性来存储权限信息,所以只有登陆成功后session里才会有super这个属性。
denied.html可以防在WEB-INF文件夹里,这样就不能直接访问,只能用forward跳转访问。
FilterChain的逻辑
/login.html过滤器
这个过滤器一定要放在/*过滤器之前,否则会造成死循环。
Object logined = session.getAttribute("super");if (logined == null) forward to "/login.html";else redirect to "/center.html";
/check.jsp过滤器
这个过滤器一定要放在/*过滤器之前,否则会造成无法验证登陆。
Object logined = session.getAttribute("super");if (logined == null) forward to "/check.html";else redirect to request.getContextPath()+"/center.html";
/*过滤器
Object logined = session.getAttribute("super");if (logined == null) redirect to request.getContextPath()+"/login.html";else chain.doFilter(request, response);
1-2顺序可变,但一定要在3之前;3之后的过滤器顺序可变,但一定要在3之后。
剩下的过滤器逻辑类似,假设需要区分super和ordinary用户,则分别新建两个过滤器,过滤/super/*
和/ordinary/*
。
if(session.getAttribute("super").toString().contains("word")) chain.doFilter(request, response);else forward to "/denied.jsp";
check.jsp的逻辑
<%@ page contentType="text/html;charset=UTF-8" pageEncoding="utf-8" %><html> <meta http-equiv=Content-Type content="text/html;charset=utf-8"><head> <title>check</title></head><body> <% response.setHeader("progma","no-cache"); response.setHeader("Cache-Control","no-cache"); response.setDateHeader("Expires",0); String username = request.getParameter("username"); String password = request.getParameter("password"); if (username == null || password == null) response.sendRedirect(request.getContextPath()+"/login.html"); else if (username.equals("admin") && password.equals("123")) { session.setAttribute("super","super"); response.sendRedirect(request.getContextPath()+"/center.html"); } else { response.setHeader("refresh","3;url=login.html"); %> 用户不存在或密码错误,3秒后自动返回登陆界面。<br> 如果没有返回,请点击<a href="login.html">此处</a>。 <%}%></body></html>
login.html的代码
<html><meta http-equiv=Content-Type content="text/html;charset=utf-8"><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0"><head> <title>login</title> <script type="text/javascript"> function Check() { with(document.info) { var uname = username.value; var psd = password.value; if(uname == null || uname == "") alert("用户名为空"); else if (psd == null || psd == "") alert("密码为空"); else submit(); } } </script></head><body><br><br><br><br><center> <form name="info" action="check.jsp" method="post"> <table> <tr><td colspan="2" align="center">用户登录</td></tr> <tr><td>登录名:</td><td><input type="text" name="username"></td></tr> <tr><td>密码:</td><td><input type="password" name="password"></td></tr> </table> <input type="button" value="登录" onclick="Check()"> <input type="reset" value="重置"> </form></center></body></html>
注意,check.jsp和login.html里需要设置页面不缓存。
check.jsp密码验证部分应当从数据库里取用户名、密码、权限信息,这里为方便简化了。
0 0
- Java Web入门之用Filter实现用户权限的管理
- Java Web入门之Filter要点
- java web 之filter
- Java Web之Filter
- Java Web 的servlet 之过滤器 filter
- 用ASP实现WEB页面分用户权限的访问
- Web应用中基于组的用户权限管理在Spring框架下的实现
- Jsp的filter拦截器实现用户权限分级
- java web之Filter详解
- java web之Filter详解
- 数据库之用户权限管理
- Java用户权限管理
- 权限管理之基于ACL的实现:讲解授权、认证、获得用户权限过程
- 简单的用户权限管理
- linux用户权限的管理
- linux用户权限的管理
- linux用户权限的管理
- linux用户权限的管理
- Aspose Merge Document
- JavaScript 创建类/对象的几种方式
- 自定义UIPageControl,可修改任何属性,简单粗暴
- 可持久化线段树(主席树)
- linux 进程(一)---基本概念
- Java Web入门之用Filter实现用户权限的管理
- javascript遍历对象属性和方法
- 小说爬虫之JAVA代码的实现(附代码)
- 提取视频关键帧和关键帧的时间点信息
- Android 基本布局(2)FrameLayout和RelativeLayout
- 史上最全的ios源码汇总
- git cherry-pick简介
- linux 进程(二) --- 进程的创建及相关api
- Android 基本布局(3)用代码控制布局与布局参数