1.新建过滤器类:

package com.xiami.manager.filter;

import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

public class AuthFilter implements Filter {
public void init(FilterConfig filterConfig) throws ServletException {
}
public void destroy() {
}

 public void doFilter(ServletRequest servletRequest,
ServletResponse servletResponse,
FilterChain filterChain)
throws IOException, ServletException {
System.out.println("该url正在过滤。。。。。");
/**
* 1,doFilter的第一个参数为ServletRequest对象。此对象给过滤器提供了对进入的信息(包括  
* 表单数据、cookie和HTTP请求头)的完全访问。第二个参数为ServletResponse,通常在简单的过  
* 滤器中忽略此参数。最后一个参数为FilterChain,此参数用来调用servlet或JSP页。
*/
HttpServletRequest request = (HttpServletRequest) servletRequest;
/**
* 如果处理HTTP请求,并且需要访问诸如getHeader或getCookies等在ServletRequest中  
* 无法得到的方法,就要把此request对象构造成HttpServletRequest
*/
HttpServletResponse response = (HttpServletResponse) servletResponse;
String currentURL = request.getRequestURI(); // 取得根目录所对应的绝对路径:
String targetURL = currentURL.substring(currentURL.indexOf("/", 1),
currentURL.length()); // 截取到当前文件名用于比较
HttpSession session = request.getSession(false);
if (!"/login.jsp".equals(targetURL)) {
if(!"/userLogin.action".equals(targetURL)){//不过滤登入的action
// 判断当前页是否是重定向以后的登录页面页面,如果是就不做session的判断,防止出现死循环
if (session == null || session.getAttribute("Competence") == null) {
// *用户登录以后需手动添加session
System.out.println("request.getContextPath()="
+ request.getContextPath());
response.sendRedirect(request.getContextPath() + "/login.jsp");
// 如果session为空表示用户没有登录就重定向到login.jsp页面
return;
}
}
}
// 加入filter链继续向下执行
filterChain.doFilter(request, response);
/**
*  调用FilterChain对象的doFilter方法。Filter接口的doFilter方法取一个FilterChain对象作   为它
* 的一个参数。在调用此对象的doFilter方法时,激活下一个相关的过滤器。如果没有另
*   一个过滤器与servlet或JSP页面关联,则servlet或JSP页面被激活。
*/
}
}

2.在web.xml中配置:

<filter>
<filter-name>AuthFilter</filter-name>
<filter-class>com.xiami.manager.filter.AuthFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>AuthFilter</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>AuthFilter</filter-name>
<url-pattern>*.html</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>AuthFilter</filter-name>
<url-pattern>*.htm</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>AuthFilter</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>

3.当登入成功时,在action中把用户资料写入session中。

ServletActionContext.getRequest().getSession().setAttribute("Competence", "s");

4.当退出账户时,在action中吧session置为null

ServletActionContext.getRequest().getSession().setAttribute("Competence", null);

备注:

按照以上的方式即可解决url权限的问题。

通过过滤器Filter来完成url访问权限限制相关推荐

  1. 通过过滤器防止用户通过url访问不在权限内的菜单

    解决方案:在web层配置过滤器: public void doFilter(ServletRequest request, ServletResponse response,FilterChain c ...

  2. SpringBoot 利用过滤器Filter修改请求url地址

    要求: 代码中配置的url路径为http://127.0.0.1/api/associates/queryAssociatesInfo 现在要求http://127.0.0.1/associates/ ...

  3. shiro 过滤器 Filter 修改请求url

    shiro框架中有拦截器(过滤器)Filter机制,先将我们的request请求进行匹配,如果匹配成功,则执行相应的Filter,如果不匹配,则放行,让Servlet的拦截器去匹配,执行相应的Cont ...

  4. java过滤器filter过滤相同url时的执行顺序

    java配置过滤器有两种方式: 第一种:web.xml中以filter-mapping标签方式配置,分为两种,一种是url-pattern,另一种是servlet-name. url-pattern方 ...

  5. java url拦截器框架_使用Spring Interceptor实现URL访问校验

    本文中介绍我在简单的实际应用中,针对登录用户的访问权限问题的具体实现,整体设计如下图: 图中请求进入Spring容器后会对用户的有效性.权限进行验证,只有验证都通过之后才能进入实际业务逻辑. 上图的实 ...

  6. 基于URL的权限验证流程总结

    之前写过一篇博客:拦截器实现基于Url的权限管理,文章中讲解了怎么用拦截器实现url权限认证,这仅仅是权限管理的一部分.今天这篇博客就来说说一个项目完整的权限认证流程. 1. 准备权限数据 服务器启动 ...

  7. 通过shiro进行按钮及页面访问url的权限控制

    1.当面我们每次登录系统时,都会通过我们自己定义的继承AuthorizingRealm的ShiroRealm进行用户账号密码的确认以及拥有权限的查询: (1)自定义shiroReam: public ...

  8. 通过session来设置登录主界面时,通过过滤器filter判断是否已经登录过,如果已经登陆过可以直接访问主界面,如果没有,需要重新登陆

           以下通过session来设置登录主界面时,通过过滤器filter判断是否已经登录过,如果已经登陆过可以直接访问主界面,如果没有,需要重新登陆. 实现功能,当第一次登陆时,经过账号密码判断 ...

  9. Java web—Servlet过滤器(Filter)

    前言:         过滤器是Servlet中一个非常重要的组成部分,进行WEB开发时无不用到过滤器:因此这篇blog来单独总结下关于过滤器的知识点. 一.首先来了解一下什么是过滤器: 下面这句话引 ...

最新文章

  1. 转、转、转——陀螺的梦话
  2. XML之父愤然离职亚马逊!看不惯公司疫情期间种种作为,百万年薪不要了
  3. python核心数据类型_Python核心数据类型-列表
  4. boost::iostreams模块实现大文件偏移量使用 file_descriptor 进行测试
  5. Android 将混淆后的堆栈信息恢复
  6. 替换SAP Fiori Logo不成功的workaround
  7. 学习笔记(二)JavaScript基本概念(语法,数据类型,控制语句,函数)
  8. java keytool证书工具使用小结
  9. linux mysql 5.6.23_mysql 5.6.23 的安装
  10. 不可小视的贝叶斯(一)
  11. Github README.md中添加图片
  12. ios睡眠分析 卧床 睡眠_苹果ios14睡眠记录功能 让用户清楚的了解自己的睡眠_娱乐频道_中华网...
  13. swift 函数类型+高阶函数
  14. 90后程序员职场报告:月薪普遍过万 超七成有房有车 女性程序员不足一成
  15. 解密街头立体画的创作过程
  16. 图片怎么转换为jpg格式的?照片如何在线转格式?
  17. 树形结构来了(了解)
  18. Android组件间数据传递
  19. TRC丨TRC 艾美捷 1-(3,5-双(苄氧基)苯基)pent-1-en-3-one说明书
  20. 使用iPhone配置腾讯企业邮箱

热门文章

  1. 重载和重写的区别及在typescript中的使用
  2. Spring中的一些常用注解
  3. 【CF226C】Anniversary
  4. KindEditor粘贴时候自动上传远程图片(非本地)
  5. 【ant-design】分页器英文如何转中文
  6. nodejs中生成uuid
  7. grub error: unknown filesystem的解决办法
  8. Treasure Project(藏宝计划)冲刺百倍!
  9. Hadoop---Google MapReduce(转)
  10. 如何替换json对象中的key