springMVC 用户登录权限验证实现过程解析

通过上网搜资料显示,使用filter和interceptor都可以实现。不过推荐使用interceptor.

下面就使用Interceptor实现用户登录权限验证功能。

拦截器需要实现Inceptor拦截器接口的三个方法。

1.preHandle方法

顾名思义,该方法将在请求处理之前进行调用。SpringMVC 中的Interceptor 是链式的调用的,在一个应用中或者说是在一个请求中可以同时存在多个Interceptor 。每个Interceptor 的调用会依据它的声明顺序依次执行,而且最先执行的都是Interceptor 中的preHandle 方法,所以可以在这个方法中进行一些前置初始化操作或者是对当前请求的一个预处理,也可以在这个方法中进行一些判断来决定请求是否要继续进行下去。该方法的返回值是布尔值Boolean类型的,当它返回为false 时,表示请求结束,后续的Interceptor 和Controller 都不会再执行;当返回值为true 时就会继续调用下一个Interceptor 的preHandle 方法,如果已经是最后一个Interceptor 的时候就会是调用当前请求的Controller 方法。

2.postHandle风法

由preHandle 方法的解释我们知道这个方法包括后面要说到的afterCompletion 方法都只能是在当前所属的Interceptor 的preHandle 方法的返回值为true 时才能被调用。postHandle 方法,顾名思义就是在当前请求进行处理之后,也就是Controller 方法调用之后执行,但是它会在DispatcherServlet 进行视图返回渲染之前被调用,所以我们可以在这个方法中对Controller 处理之后的ModelAndView 对象进行操作。postHandle 方法被调用的方向跟preHandle 是相反的,也就是说先声明的Interceptor 的postHandle 方法反而会后执行。

3.afterCompletion方法

该方法也是需要当前对应的Interceptor 的preHandle 方法的返回值为true 时才会执行。顾名思义,该方法将在整个请求结束之后,也就是在DispatcherServlet 渲染了对应的视图之后执行。这个方法的主要作用是用于进行资源清理工作的。

下面实现自己的拦截器

package com.huitong.util;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class StudentAuth implements HandlerInterceptor {
  public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
    HttpSession session = request.getSession();
    Object stu = session.getAttribute("student");
    if( stu == null ){
      response.sendRedirect("/webapp1/index.jsp");
      return false;
    }
    return true;
  }
  public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
  }
  public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
  }
}

最后需要在spring-mvc.xml配置文件中进行拦截器配置,下面是配置片段

<mvc:interceptors>
    <mvc:interceptor>
      <!-- 先匹配所有路径,然后排除不需要检查的路径 -->
      <mvc:mapping path="/**"/>

      <!-- 与登录相关的请求 -->
      <mvc:exclude-mapping path="/*.jsp"/>
      <mvc:exclude-mapping path="/student/login.action"/>
      <mvc:exclude-mapping path="/student/register.action"/>

      <!-- 以下是静态资源 -->
      <mvc:exclude-mapping path="/images/**" />
      <mvc:exclude-mapping path="/css/**" />
      <mvc:exclude-mapping path="/font/**" />
      <mvc:exclude-mapping path="/js/**" />
      <mvc:exclude-mapping path="/datepicker/**" />

      <!-- 用户是否已经登录的检查bean -->
      <bean class="com.huitong.util.StudentAuth"/>

    </mvc:interceptor>
  </mvc:interceptors>

最后可以测试使用了

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • springmvc拦截器登录验证示例

    一开始,学了拦截器与过滤器,咋一看两者有点像,实际上两者有很大的不同.就用拦截器和过滤器分别做了登录验证试验,这次先说拦截器.下面是自己实践的一个实例: 在spring-mvc.xml中配置拦截器: <mvc:interceptors> <mvc:interceptor> <mvc:mapping path="/user/*"/> <!-- 定义在mvc:interceptor下面的表示是对特定的请求才进行拦截的 --> <bean

  • Spring MVC Annotation验证的方法

    简介说明 使用Spring MVC的Annotation验证可以直接对view model的简单数据验证,注意,这里是简单的,如果model的数据验证需要有一些比较复杂的业务逻辑性在里头,只是使用annotation做验证是比较难的. 以下是使用Spring MVC自带的annotation验证,加上自定义的一个@Tel的annotation验证例子,此例子具有: 1.支持多语言(国际化) 2.对默认数据先进行转化,比如int.date类型如果传入空值时,会抛异常,默认给定值 先看配置: 1.w

  • springMVC实现图形验证码(kaptcha)代码实例

    springMVC项目中实现图形验证码功能,可以使用kaptcha来实现,下面是步骤 一.引入架包,pom.xml <dependency> <groupId>com.google.code</groupId> <artifactId>kaptcha</artifactId> <version>2.3.2</version> </dependency> 二.kaptchaProducer配置,需要在spring

  • Spring MVC InitBinder验证方法

    使用InitBinder做验证的情况一般会在此Controller中提交的数据需要有一些是业务性质的,也即比较复杂的验证情况下才会使用.大部份简单的表单验证,使用annotation验证即可以解决. Annotation验证使用方法可参见:http://www.jb51.net/article/136448.htm 这里需要注意的一点:InitBinder和Annotation两种验证只能二选一,如果使用了InitBinder,就不能使用Annotation验证. 前面的web.xml和spri

  • 使用SpringMVC的@Validated注解验证的实现

    1.SpringMVC验证@Validated的使用 第一步:编写国际化消息资源文件 编写国际化消息资源ValidatedMessage.properties文件主要是用来显示错误的消息定制 edit.username.null=用户名不能为空 edit.password.size=密码最少{min}位,最长{max}位 ...... 可以将edit.username.null与edit.password.size看为参数,在message中传递,具体请看第二步. 第二步:Bean实体类中加注解

  • SpringMVC使用@Valid注解进行数据验证的方法

    我们在做Form表单提交的时候,只在前端做数据校验是不够安全的,所以有时候我们需要在后端同样做数据的校验.好在SpringMVC在后台验证给我们提供了一个比较好的支持.那就是使用Valid接口的实现类做数据校验.在这之前我们先做一下准备的工作. 添加相关的Maven依赖 我们先把需要的jar包添加进来. <dependency> <groupId>javax.validation</groupId> <artifactId>validation-api<

  • Spring MVC+ajax进行信息验证的方法

    本文是一个ajax结合Spring MVC使用的入门,首先我们来了解一下什么是Ajax AJAX 不是新的编程语言,而是一种使用现有标准的新方法.AJAX 最大的优点是在不重新加载整个页面的情况下,可以与服务器交换数据并更新部分网页内容.所以ajax对于提升用户体验十分重要 XMLHttpRequest 是 AJAX 的基础. 主要的方法有两种: var xmlhttp=new XMLHttpRequest(); xmlhttp.open(method,url,async) xmlhttp.se

  • SpringMVC实现表单验证功能详解

    本章节内容很丰富,主要有基本的表单操作,数据的格式化,数据的校验,以及提示信息的国际化等实用技能. 首先看效果图 项目结构图 接下来用代码重点学习SpringMVC的表单操作,数据格式化,数据校验以及错误提示信息国际化.请读者将重点放在UserController.java,User.java,input.jsp三个文件中. maven 项目必不可少的pom.xml文件.里面有该功能需要的所有jar包. <?xml version="1.0" encoding="UTF

  • SpringMVC拦截器——实现登录验证拦截器的示例代码

    本例实现登陆时的验证拦截,采用SpringMVC拦截器来实现 当用户点击到网站主页时要进行拦截,用户登录了才能进入网站主页,否则进入登陆页面 核心代码 首先是index.jsp,显示链接 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String bas

  • springMVC 用户登录权限验证实现过程解析

    通过上网搜资料显示,使用filter和interceptor都可以实现.不过推荐使用interceptor. 下面就使用Interceptor实现用户登录权限验证功能. 拦截器需要实现Inceptor拦截器接口的三个方法. 1.preHandle方法 顾名思义,该方法将在请求处理之前进行调用.SpringMVC 中的Interceptor 是链式的调用的,在一个应用中或者说是在一个请求中可以同时存在多个Interceptor .每个Interceptor 的调用会依据它的声明顺序依次执行,而且最

  • 基于springboot实现整合shiro实现登录认证以及授权过程解析

    这篇文章主要介绍了基于springboot实现整合shiro实现登录认证以及授权过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1.添加shiro的依赖 <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-spring-boot-web- starter</artifactId> <version&g

  • Node登录权限验证token验证实现的方法示例

    1. token的使用场景 无状态请求 保持用户的登录状态 第三方登录(token+auth2.0) 2. 基于token的验证原理 后端不再存储认证信息,而是在用户登录的时候生成一个token,然后返回给前端,前端进行存储,在需要进行验证的时候将token一并发送到后端,后端进行验证 加密的方式:对称加密和非对称加密,对称加密指的是加密解密使用同一个密钥,非对称加密使用公钥和私钥,加密用私钥加密,解密用公钥解密 3. 基于Token的身份验证的过程如下: 客户端:用户名和密码请求登录 服务器:

  • Go gin权限验证实现过程详解

    目录 权限管理 1. 特征 2. 怎么运行的 3. 安装 4. 示例代码 权限管理 Casbin是用于Golang项目的功能强大且高效的开源访问控制库. 1. 特征 Casbin的作用: 以经典{subject, object, action}形式或您定义的自定义形式实施策略,同时支持允许和拒绝授权. 处理访问控制模型及其策略的存储. 管理角色用户映射和角色角色映射(RBAC中的角色层次结构). 支持内置的超级用户,例如root或administrator.超级用户可以在没有显式权限的情况下执行

  • jsp基于XML实现用户登录与注册的实例解析(附源码)

    简单的基于xml做数据库的登录与注册 主题介绍: 1.xml的读取和存储,主要是用到dom4j技术,(网络中的文件存储路径采用classLoader) 文件的读取和存储,写了一个工厂类 public class DocumentFactory { private static Document dom=null;//需要共享一个dom,所以需要设置为static private static String name="user.xml"; private static String f

  • 使用Filter实现登录权限验证

    本文实例为大家分享了用Filter实现登录权限验证的具体代码,供大家参考,具体内容如下 用户在访问任何界面时,会查询用户是否登录过,如果登录过则可以直接访问,没有登录的话跳到登录界面 web.xml配置过滤器 <filter> <filter-name>myFilter</filter-name> <filter-class>com.zyk.ctrl.MyFilter</filter-class> <!-- 配置初始化参数,指明再没有登录的

  • 使用JSP实现简单的用户登录注册页面示例代码解析

    实验要求: 将实验2中的系统用户登录和注册页面改为JSP页面,并部署自己的Web应用于Tomcat服务器中 具体要求: 完成登录JSP页面设计和注册页面设计 在登录页面表单中使用request对象获取用户信息,建立新的JSP页面完成登录验证(用户名和密码自己指定即可). 验证结果显示(如登录成功/用户名密码错误,可以使用JavaScript,也可以使用新的JSP页面). 在注册页面表单中使用request对象获取用户注册信息(注册项目由自己指定),在新的JSP页面显示用户注册信息,并提示注册成功

  • php面向对象的用户登录身份验证

    本文实例为大家分享了php用户登录身份验证的具体代码,供大家参考,具体内容如下 一.代码 conn.php <?php $conn = new com("adodb.connection"); $connstr="driver={microsoft access driver (*.mdb)}; dbq=". realpath("data/db_database07_188.mdb"); $conn->open($connstr);

  • ASP.NET jQuery 实例11 通过使用jQuery validation插件简单实现用户登录页面验证功能

    简单来说,jQuery validation插件就是来校验表单form里面元素输入的内容是否满足业务规则,如果不满足,可以给出用户自定义的提示信息.该插件不仅默认有一些校验规则,如校验内容是否为空,内容的长度是否符合给定的值,还可以根据用户自定义业务规则,而且错误提示信息,也可以根据用户的要求自定义显示.看来这个插件的功能确实很强大,是不是迫不及待想使用了.好的,那我们就开始简介如何使用它. jQuery validation 插件下载地址:http://plugins.jquery.com/p

  • java中使用Filter控制用户登录权限具体实例

    学jsp这么长时间,做的项目也有七八个了,可所有的项目都是用户登录就直接跳转到其拥有权限的页面,或者显示可访问页面的链接.使用这种方式来幼稚地控制访问权限.从来没有想过如果我没有登录,直接输入地址也可以直接访问用户的页面的. 在jsp中权限的控制是通过Filter过滤器来实现的,所有的开发框架中都集成有Filter,如果不适用开发框架则有如下实现方法: LoginFilter.java 复制代码 代码如下: public class LoginFilter implements Filter {

随机推荐