public class LoginFilter implements Filter {
private String permitUrls[] = null; private String gotoUrl = null; public void destroy() { // TODO Auto-generated method stub permitUrls = null; gotoUrl = null; } public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { // TODO Auto-generated method stub HttpServletRequest res=(HttpServletRequest) request; HttpServletResponse resp=(HttpServletResponse)response; if(!isPermitUrl(request)){ if(filterCurrUrl(request)){ System.out.println("--->请登录"); resp.sendRedirect(res.getContextPath()+gotoUrl); return; } } System.out.println("--->允许访问"); chain.doFilter(request, response); } public boolean filterCurrUrl(ServletRequest request){ boolean filter=false; HttpServletRequest res=(HttpServletRequest) request; User user =(User) res.getSession().getAttribute("user"); if(null==user) filter=true; return filter; } public boolean isPermitUrl(ServletRequest request) { boolean isPermit = false; String currentUrl = currentUrl(request); if (permitUrls != null && permitUrls.length > 0) { for (int i = 0; i < permitUrls.length; i++) { if (permitUrls[i].equals(currentUrl)) { isPermit = true; break; } } } return isPermit; } //请求地址 public String currentUrl(ServletRequest request) { HttpServletRequest res = (HttpServletRequest) request; String task = request.getParameter("task"); String path = res.getContextPath(); String uri = res.getRequestURI(); if (task != null) {// uri格式 xx/ser uri = uri.substring(path.length(), uri.length()) + "?" + "task=" + task; } else { uri = uri.substring(path.length(), uri.length()); } System.out.println("当前请求地址:" + uri); return uri; } public void init(FilterConfig filterConfig) throws ServletException { // TODO Auto-generated method stub String permitUrls = filterConfig.getInitParameter("permitUrls"); String gotoUrl = filterConfig.getInitParameter("gotoUrl"); this.gotoUrl = gotoUrl; if (permitUrls != null && permitUrls.length() > 0) { this.permitUrls = permitUrls.split(","); } } }

参考地址:http://www.jb51.net/article/38730.htm

用Filter作用户授权的例子的更多相关文章

  1. Mysql 创建用户 授权

    一, 创建用户: 命令:CREATE USER 'username'@'host' IDENTIFIED BY 'password'; 说明:username - 你将创建的用户名, host - 指 ...

  2. MySQL中用户授权/删除授权的方法

    用户授权方法 你可以通过发出GRANT语句增加新用户:  代码如下 复制代码 shell> mysql --user=root mysql mysql> GRANT ALL PRIVILE ...

  3. Mysql 创建用户授权

    MySQL创建用户与授权 一. 创建用户 命令: CREATE USER 'username'@'host' IDENTIFIED BY 'password'; 说明: username:你将创建的用 ...

  4. 【转】在Win7的IIS上搭建FTP服务及用户授权

    [转]在Win7的IIS上搭建FTP服务及用户授权 [转]在Win7的IIS上搭建FTP服务及用户授权 FTP服务 FTP是文件传输协议(File Transfer Protocol)的简称,该协议属 ...

  5. mysql5.7创建用户授权删除用户撤销授权

    一, 创建用户: 命令: CREATE USER 'username'@'host' IDENTIFIED BY 'password'; 说明:username - 你将创建的用户名, host - ...

  6. MySQL用户授权 和 bin-log日志 详解和实战(http://www.cnblogs.com/it-cen/p/5234345.html)

    看 了上一篇博文的发布时间,到目前已经有三个月没更新博文了.这三个月经历了很多事情,包括工作.生活和感情等等.由于个人发展的原因,这个月准备换工作 啦.在这段时间,我会把Web大型项目中所接触到的技术 ...

  7. ASP.NET Core 2.2 : 二十七. JWT与用户授权(细化到Action)

    上一章分享了如何在ASP.NET Core中应用JWT进行用户认证以及Token的刷新,本章继续进行下一步,用户授权.涉及到的例子也以上一章的为基础.(ASP.NET Core 系列目录) 一.概述 ...

  8. Database基础(四):密码恢复及设置、 用户授权及撤销、数据备份与恢复、MySQL管理工具

    一.密码恢复及设置 目标: 本案例要求熟悉MySQL管理密码的控制,完成以下任务操作: 练习重置MySQL管理密码的操作 通过正常途径设置MySQL数据库的管理密码 步骤: 步骤一:重置MySQL管理 ...

  9. 【Java EE 学习 76 上】【数据采集系统第八天】【角色授权】【用户授权】【权限的粗粒度控制】【权限的细粒度控制】

    一.角色管理 单击导航栏上的"角色管理"超链接,跳转到角色管理界面,在该界面上显示所有角色,并提供角色的增加和删除.修改超链接. 1.增加新角色(角色授权) 流程:单击增加新角色超 ...

随机推荐

  1. (树)Subtrees -- hdu -- 5524

    http://acm.hdu.edu.cn/showproblem.php?pid=5524 Subtrees Time Limit: 2000/1000 MS (Java/Others)    Me ...

  2. noip第24课作业

    1.  马走日 [问题描述] 马在中国象棋以日子形规则移动.请编写一段程序给定n*m大小的棋盘,以及马的初始位置(x,y),要求不能重复经过棋盘上的同一个点,计算马可以有多少途径遍历棋盘上的所有点. ...

  3. 23种设计模式(1)-Facade设计模式

    前记 曾经我遇见的一个需求是这样的,接口A有个方法void methodA(),类B需要实现接口A的methodA()方法,并且在类B中需要把methodA()方法内部处理逻辑获得的结果利用C类实例的 ...

  4. Codeforces822 B. Crossword solving

    B. Crossword solving time limit per test 1 second memory limit per test 256 megabytes input standard ...

  5. hdu1258

    给你两个数t,n 接下来输入n个数字 让你输出所有数字相加等于n的组合 4 6 4 3 2 2 1 1 t n 4 3+1 2+2 2+1+1 Sample Input 4 6 4 3 2 2 1 1 ...

  6. hdu 5050 大数

    http://acm.hdu.edu.cn/showproblem.php?pid=5050 大数模板最大公约数 信kuangbin,能AC #include <cstdio> #incl ...

  7. Linked List

    链表是线性表的一种.线性表是最基本,最简单也是最常见的一种数据结构.线性表中数据元素之间的关系是一对一的关系,除了第一个和最后一个数据元素外,其他数据元素都是首尾相接的. 线性表有两种存储方式,一种是 ...

  8. input和raw_input

    Python2.X使用raw_input() Python3.X废弃了raw_input()函数,使用input()函数替代它 code: data=input("please input ...

  9. 深入探索AngularJS

    目录 深入探索AngularJS 作用域Scope是DOM和Directives交互的抽象 Scope是POJO对象 Scope是上下文 Scope继承树 Scope附加功能 正交功能 Element ...

  10. NET npoi帮助类

    nuget添加npoi /// <summary> /// npoi帮助类 /// </summary> public static class NpoiHelper { // ...