`

使用HandlerInterceptor实现简单的授权

阅读更多
实现拦截器接口HandlerInterceptor或者HandlerInterceptorAdapter
package com.qunar.keyvalue.controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;

import com.qunar.keyvalue.model.User;

public class AuthorizeInterceptor extends HandlerInterceptorAdapter{
	@Override
	public boolean preHandle(HttpServletRequest request,
			HttpServletResponse response, Object handler) throws Exception {
		boolean handlerOk = super.preHandle(request, response, handler);
		if(handlerOk){
			String url = request.getRequestURL().toString();
			if(url.endsWith("doLogin"))
				return true;
			
			HttpSession session = request.getSession();
			User user = (User)session.getAttribute("user");
			if(user == null) {
				response.sendRedirect("login.jsp");
			}
			return true;
		}
		return false;
	}
}

配置一下拦截器:
 <bean id="authorizeInterceptor" class="com.qunar.keyvalue.controller.AuthorizeInterceptor"/>
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"/>
	
<bean id="handlerMapping" class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">
		<property name="interceptors">
			<list>
				<ref bean="authorizeInterceptor"/>
			</list>
		</property>
</bean>

BTW:配置中一定要去掉<mvc:annotation-driven />,去掉其默认配置,否则会实例化两个DefaultAnnotationHandlerMapping,并且不使用你配置的那个DefaultAnnotationHandlerMapping
5
2
分享到:
评论
3 楼 fuliang 2013-05-03  
quickbomber 写道
你好,目前使用Spring3,去掉了<mvc:annotation-driven />所有注解都不起作用了...确定是这样配置么?


使用context:component-scan
2 楼 quickbomber 2013-05-02  
你好,目前使用Spring3,去掉了<mvc:annotation-driven />所有注解都不起作用了...确定是这样配置么?
1 楼 zhao0p 2011-03-30  
BTW:配置中一定要去掉<mvc:annotation-driven />,去掉其默认配置,否则会实例化两个DefaultAnnotationHandlerMapping,并且不使用你配置的那个 DefaultAnnotationHandlerMapping

这句话对我太有用了,非常感激

相关推荐

    微信企业号OAuth2验证接口的2种实例(使用SpringMVC)

    2. 拦截器配置:在SpringMVC中,可以使用`HandlerInterceptor`实现请求拦截。在拦截器中,检查每个请求的请求头或cookie中是否存在有效的access_token。 3. 获取用户信息:与注解方式相同,通过access_token调用...

    springboot拦截器实现拦截器 权限校验,登录demo

    本文将详细介绍如何在Spring Boot中实现拦截器以进行权限校验和登录验证,通过一个简单的Demo来阐述整个过程。 首先,我们需要创建一个自定义的拦截器类。这个类通常会继承`HandlerInterceptorAdapter`,这是一个...

    拦截器实现权限管理

    1. **定义拦截器**:创建一个实现了框架提供的拦截器接口的类,例如在Spring MVC中,你可以实现`HandlerInterceptor`接口。 2. **预处理方法**:在`preHandle()`方法中,你可以进行权限检查。获取当前请求的URL,并...

    spring_myibaties简单的权限的管理

    通过实现`HandlerInterceptor`接口,我们可以在请求处理之前、之后或异常时进行权限验证。 5. **注解(Annotation)**:在服务和控制器层,可以使用注解来标记需要权限控制的方法,如`@PreAuthorize`、`@Secured`等...

    过滤器与过滤器

    而拦截器则是SpringMVC框架特有的功能,它实现了AOP(面向切面编程)的概念,主要通过实现HandlerInterceptor接口或继承HandlerInterceptorAdapter类来创建。拦截器在Controller处理请求前后执行,提供了更细粒度的...

    SpringMVC拦截器实现登录认证

    实现登录认证的拦截器,你需要创建一个实现了`HandlerInterceptor`接口的类。这个接口有两个主要方法:`preHandle()`和`afterCompletion()`。`preHandle()`在请求处理之前调用,可以用来验证用户是否已登录;`...

    SpringMVC+Mybatis+Mysql+权限+拦截器的整合实例 源码程序

    这通常通过拦截器实现,比如SpringMVC中的HandlerInterceptor,可以在请求处理前进行预处理,如检查用户权限。 拦截器(Interceptor)是SpringMVC中的一种机制,它可以拦截并处理HTTP请求,提供诸如日志记录、性能...

    SpringBoot 简单登录功能

    在Spring Boot应用中,实现一个简单的登录功能是基础但至关重要的。这涉及到用户认证与授权,通常使用拦截器(Interceptor)来控制访问权限。本文将深入探讨如何在Spring Boot环境中设置一个基本的登录功能。 首先...

    Spring MVC--拦截器实现和用户登陆例子

    例如,我们可以实现一个简单的拦截器: ```java public class HanderInterceptor1 implements HandlerInterceptor { @Override public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, ...

    spring拦截器的一个简单实例

    创建Spring拦截器的第一步是实现HandlerInterceptor接口,该接口定义了三个方法: 1. `preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)`: 在请求被Controller处理之前调用。...

    springboot demo

    5. **用户权限控制**:实现简单的用户权限控制可能涉及认证(Authentication)和授权(Authorization)。Spring Security 是一个强大的安全框架,它可以与 Spring Boot 结合使用,提供基于角色的访问控制、登录认证...

    ssm-拦截器.zip

    在本压缩包"ssm-拦截器.zip"中,可能包含了一个简单的SSM项目,演示了如何配置和使用拦截器。 首先,我们来深入理解SSM框架中的拦截器。SpringMVC拦截器的工作原理是在Controller方法执行前或执行后进行拦截,可以...

    10个高频Spring BOOT面试题

    - **使用拦截器**: 通过实现`HandlerInterceptor`接口来处理跨域问题。 - **配置全局拦截器**: 在配置类中通过`@CrossOrigin`注解来全局配置跨域。 其中最简单有效的方式是使用`@CrossOrigin`注解。例如: ```java...

    spring mvc 用户管理

    - 定义拦截器,实现HandlerInterceptor接口,可以对请求进行预处理和后处理,例如实现登录检查、记录日志等功能。 通过以上步骤,你可以构建起一个基本的用户管理系统。这个案例对于理解Spring MVC的工作原理以及...

    Springboot+Vue+shiro实现前后端分离、权限控制的示例代码

    下面将详细阐述如何使用这些技术实现权限控制。 ### 一、前后端分离思想 前后端分离意味着前端与后端职责明确,前端负责展示和用户交互,后端负责业务逻辑和数据处理。通信方式通常采用API接口,后端通过...

    Java面试框架高频问题2019

    - 实现`HandlerInterceptor`接口或继承`HandlerInterceptorAdapter`。 **问题二十一:注解原理** - 注解是Java语言的一个特性,用于在代码中添加元数据。Spring框架利用反射机制读取和解析注解,从而实现特定的...

    Auth-demo:基于Springboot前后端分离式,利用拦截器完成登录拦截的demo

    Spring Security是Spring生态系统中的安全组件,可实现这些功能,但在这个例子中,可能是自定义实现或者使用了Spring Boot的简单机制。 7. **源码分析**:下载的`Auth-demo-master`文件包含的是项目源代码,可以...

    Spring 2.0 MVC的应用

    通过逐步学习和实践这个项目,你可以掌握如何创建RESTful API,处理表单提交,实现用户认证和授权等Web开发的关键技能。随着对Spring框架更深入的理解,开发者可以利用其强大的依赖注入、AOP(面向切面编程)和其他...

Global site tag (gtag.js) - Google Analytics