过滤器的使用(权限过滤器)

1.实体类

 1 package com.zdsofe.work;
 2
 3 public class User {
 4
 5
 6     public String userName;
 7     public String password;
 8
 9     public User(String userName, String password) {
10
11         this.userName = userName;
12         this.password = password;
13     }
14     public String getUserName() {
15         return userName;
16     }
17     public void setUserName(String userName) {
18         this.userName = userName;
19     }
20     public String getPassword() {
21         return password;
22     }
23     public void setPassword(String password) {
24         this.password = password;
25     }
26 }

2.web.xml的配置

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
 3   <display-name>webProject4</display-name>
 4   <filter>
 5   <filter-name>code</filter-name>
 6   <filter-class>com.zdsofe.work.UserFliter</filter-class>
 7   </filter>
 8   <filter-mapping>
 9   <filter-name>code</filter-name>
10   <url-pattern>/pages/*</url-pattern>
11   </filter-mapping>
12   <welcome-file-list>
13     <welcome-file>index.html</welcome-file>
14     <welcome-file>index.htm</welcome-file>
15     <welcome-file>index.jsp</welcome-file>
16     <welcome-file>default.html</welcome-file>
17     <welcome-file>default.htm</welcome-file>
18     <welcome-file>default.jsp</welcome-file>
19   </welcome-file-list>
20 </web-app>

3.主页面

 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8"%>
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 4 <html>
 5 <head>
 6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 7 <title>Insert title here</title>
 8 </head>
 9
10 <body>
11 <form action="loginServlet">
12 用户名:<input type="text" name="userName"/><br/>
13 密码:<input type="password" name="password"/><br/>
14 <button type="submit">登录</button>
15 </form>
16 </body>
17 </html>

4.登录成功页面

 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8"%>
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 4 <html>
 5 <head>
 6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 7 <title>Insert title here</title>
 8 </head>
 9 <body>
10 <h1>欢迎您!!!</h1>
11 </body>
12 </html>

5.过滤器

 1 package com.zdsofe.work;
 2
 3 import java.io.IOException;
 4
 5 import javax.servlet.Filter;
 6 import javax.servlet.FilterChain;
 7 import javax.servlet.FilterConfig;
 8 import javax.servlet.ServletException;
 9 import javax.servlet.ServletRequest;
10 import javax.servlet.ServletResponse;
11 import javax.servlet.http.HttpServletRequest;
12 import javax.servlet.http.HttpServletResponse;
13
14 import org.apache.commons.lang.StringUtils;
15
16
17
18 public class UserFliter implements Filter {
19
20     @Override
21     public void destroy() {
22         // TODO Auto-generated method stub
23
24     }
25
26     @Override
27     public void doFilter(ServletRequest arg0, ServletResponse arg1,
28             FilterChain arg2) throws IOException, ServletException {
29         /*//过滤器
30          HttpServletRequest request=(HttpServletRequest)arg0;
31         HttpServletResponse response=( HttpServletResponse)arg1;
32         request.setCharacterEncoding("utf-8");
33         response.setCharacterEncoding("utf-8");
34         response.setContentType("text/html charset=utf-8");
35         arg2.doFilter(arg0, arg1);*/
36
37         //权限验证过滤器
38       HttpServletRequest request=(HttpServletRequest)arg0;
39       HttpServletResponse response=( HttpServletResponse)arg1;
40       User user= (User)request.getSession().getAttribute("user");
41
42
43       if(null!=user)
44       {
45            String userName=user.getUserName();
46           if(StringUtils.isNotBlank(userName)&&userName.contains("admin"))
47           {
48               System.out.println("登录成功");
49               arg2.doFilter(request, response);
50           } else
51           {
52               response.sendRedirect(request.getContextPath()+"/login.jsp");
53           }
54        }else
55        {
56             response.sendRedirect(request.getContextPath()+"/login.jsp");
57         }
58
59     }
60
61     @Override
62     public void init(FilterConfig arg0) throws ServletException {
63
64     }
65
66 }

6.服务器

 1 package com.zdsofe.work;
 2
 3 import java.io.IOException;
 4
 5 import javax.servlet.ServletException;
 6 import javax.servlet.annotation.WebServlet;
 7 import javax.servlet.http.HttpServlet;
 8 import javax.servlet.http.HttpServletRequest;
 9 import javax.servlet.http.HttpServletResponse;
10 import javax.servlet.http.HttpSession;
11
12
13
14 /**
15  * Servlet implementation class loginServlet
16  */
17 @WebServlet("/loginServlet")
18 public class loginServlet extends HttpServlet {
19     private static final long serialVersionUID = 1L;
20
21     /**
22      * @see HttpServlet#HttpServlet()
23      */
24     public loginServlet() {
25         super();
26         // TODO Auto-generated constructor stub
27     }
28
29     /**
30      * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
31      */
32     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
33         /*String name=request.getParameter("userName");
34         response.getWriter().print(name);*/
35
36         //获取用户名
37         String userName=request.getParameter("userName");
38         //获取密码
39         String password=request.getParameter("password");
40         //创建用户对象
41         User user=new User(userName,password);
42         //创建session对象
43         HttpSession session=request.getSession(true);
44         session.setAttribute("user", user);
45         response.sendRedirect(request.getContextPath()+"/pages/login1.jsp");
46     }
47
48     /**
49      * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
50      */
51     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
52         // TODO Auto-generated method stub
53     }
54
55 }

注意:主页面login.jsp直接在webcontent下,登陆成功页面在webcontent的子目录pages下,防止方法重定向死循环。

时间: 2024-10-05 01:16:44

过滤器的使用(权限过滤器)的相关文章

estore商城案例(三)------Filter过滤器:自动登录&amp;权限管理

前面写好了用户登录\注册\添加商品的功能模块.下面写一下对于这些功能模块的相关过滤器---自动登录与权限管理: 一.自动登录: 业务逻辑是这样的:jsp登录页面有个“自动登录选项”,如果登录这勾选了,那么在serlvet程序中则会额外的生成一个保存用户名和密码的cookie,然后每次用户向服务器发送请求时,Filter过滤器都会先判断用户的登录状态(session),如果已经登录那么无需做出受任何操作直接放行,如果没有登录(无session),那么这时体现自动登录功能作用的时候到了,先获取自动登

asp.net mvc 全局权限过滤器及继成权限方法

全局权限过滤器 //----------------------------------------------------------------------- // <copyright file="PermissionFilter.cs" company="STO EXPRESS, Ltd."> // Copyright (c) 2015 , All rights reserved. // </copyright> //--------

Shiro权限管理框架(三):Shiro中权限过滤器的初始化流程和实现原理

本篇是Shiro系列第三篇,Shiro中的过滤器初始化流程和实现原理.Shiro基于URL的权限控制是通过Filter实现的,本篇从我们注入的ShiroFilterFactoryBean开始入手,翻看源码追寻Shiro中的过滤器的实现原理. 初始化流程 ShiroFilterFactoryBean实现了FactoryBean接口,那么Spring在初始化的时候必然会调用ShiroFilterFactoryBean的getObject()获取实例,而ShiroFilterFactoryBean也在

MVC过滤器:自定义授权过滤器

一.授权过滤器 授权过滤器用于实现IAuthorizationFilter接口和做出关于是否执行操作方法(如执行身份验证或验证请求的属性)的安全策略.AuthorizeAttribute类继承了IAuthorizationFilter接口,是授权过滤器的示例.授权过滤器在任何其他过滤器之前运行. 如果要自定义授权过滤器,只需要定义一个类继承自AuthorizeAttribute类,然后重写AuthorizeAttribute类里面的方法即可. 二.示例 下面根据一个具体的案例来讲解如何使用自定义

MVC过滤器:自定义操作过滤器

一.操作过滤器 1.定义 操作过滤器用于实现IActionFilter接口以及包装操作方法执行.IActionFilter接口声明两个方法:OnActionExecuting和OnActionExecuted.OnActionExecuting在操作方法之前运行.OnActionExecuted在操作方法之后运行,可以执行其他处理,如向操作方法提供额外数据.检查返回值或取消执行操作方法. 查看ActionFilterAttribute类的定义: #region 程序集 System.Web.Mv

学习笔记_过滤器详细_2(过滤器JavaWeb三大组件之一)

过滤器详细 5 四种拦截方式 我们来做个测试,写一个过滤器,指定过滤的资源为b.jsp,然后我们在浏览器中直接访问b.jsp,你会发现过滤器执行了! 但是,当我们在a.jsp中request.getRequestDispathcer(“/b.jsp”).forward(request,response)时,就不会再执行过滤器了!也就是说,默认情况下,只能直接访问目标资源才会执行过滤器,而forward执行目标资源,不会执行过滤器!(跳转的不会执行F) public class MyFilter

drf 过滤器组件与自定义过滤器

目录 一.使用drf过滤器 二.自定义过滤器 三.使用django-filter模块 3.1 基于django-filter模块自定义过滤器类实现价格区间 自定义过滤器字段对照表 一.使用drf过滤器 drf过滤器:在GenericAPIView这个视图基类的def filter_queryset(self, queryset)方法中,通过self.filter_backends的配置来拿到过滤器并使用.但drf 默认在settings文件中的配置是空,既不使用过滤器. drf默认为我们提供了两

SSH系列:(20)权限过滤器

在系统中,① 需要验证用户的登录,只有登录后才能访问系统的资源.② 对于各个子系统,只有角色拥有"该子系统的权限"才可以操作. 编写LoginFilter过滤器,在过滤器中对用户访问的url进行登录验证,在登录的前提下再次验证如果访问的是纳税服务命名空间下的资源则利用权限验证接口PermissionCheck校验用户是否有"纳税服务". 基本步骤: (1)编写过滤器 (2)注册过滤器 (3)权限验证类 1.编写过滤器 LoginFilter.java package

[转]ASP.NET MVC过滤器中权限过滤器ValidateAntiForgeryToken的用法(Post-Only)

用途:防止CSRF(跨网站请求伪造). 用法:在View->Form表单中:<%:Html.AntiForgeryToken()%> 在Controller->Action动作上:[ValidateAntiForgeryToken] 原理: 1.<%:Html.AntiForgeryToken()%>这个方法会生成一个隐藏域:<inputname="__RequestVerificationToken" type="hidden&qu