`

使用spring拦截器进行ip white list & basic authorization验证

阅读更多
public class BasicAuthorizationInterceptor extends HandlerInterceptorAdapter {

	private static final Logger logger = LoggerFactory.getLogger(BasicAuthorizationInterceptor.class);

	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
			throws Exception {
		
		String authorization = request.getHeader("Authorization");
		logger.info("Authorization is [{}]", authorization);
		
		boolean isAuthSuccess = false;
		
		isAuthSuccess = httpBasicAuth(authorization);
		
		if(isAuthSuccess){
			return true;
		}else{
			
			response.setStatus(403);
			response.getWriter().print("Forbidden, unauthorized user");
			return false;
		}

		

	}

	
	public boolean httpBasicAuth(String authorization) throws IOException{
		
		UserConfig userconf = UserConfig.getInstanced();
		
		if (authorization!=null&&authorization.split(" ").length == 2) {
			String userAndPass = new String(new BASE64Decoder().decodeBuffer(authorization.split(" ")[1]));
			String user = userAndPass.split(":").length == 2 ? userAndPass.split(":")[0] : null;
			String pass = userAndPass.split(":").length == 2 ? userAndPass.split(":")[1] : null;
			logger.info("Username is [{}],Password is [{}]", user, pass);
			
			if(user == null || user.equals("") || pass == null || pass.equals("") ){
				return false;
			}
			
			UserInfo userinfo = userconf.getUser(user);
			
			if(userinfo == null || !pass.equals(userinfo.getPassword())){
				return false;
			}else{
				return true;
			}
		}
		return false;
	}
	
	
}

 Ip white list:

public class IPWhiteListApiInterceptor extends HandlerInterceptorAdapter {

	private static final Logger logger = LoggerFactory.getLogger(IPWhiteListApiInterceptor.class);
	
	@Override
	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
			throws Exception {
		String ip = request.getRemoteHost().equals("0:0:0:0:0:0:0:1")?"127.0.0.1":request.getRemoteHost();
		logger.info("Request From [{}]",ip);
		String url = request.getRequestURI();
		logger.debug(url);
		
		List<String> ip_white_List = SystemConfig.query_Ip_white_list();
		
		if(ip_white_List.contains(ip)){
			return true;
		}else{
			response.setStatus(403);
			response.getWriter().print("Forbidden, unauthorized IP ["+ip+"]");
			return false;
		}
		
	}
	
}

 

spring.xml 配置:

<interceptors>
		<interceptor>
		
			<mapping path="/**" />
			<beans:bean class="com.pccw.pns.apiserver.IPWhiteListApiInterceptor" />
		</interceptor>
		
		<interceptor>
			<mapping path="/**"/>
			<beans:bean class="com.pccw.pns.apiserver.BasicAuthorizationInterceptor"/>
		</interceptor>
		
		
	</interceptors>

 

分享到:
评论

相关推荐

    spring boot 登录拦截器

    在Spring Boot应用中,登录拦截器是一个至关重要的组件,它用于保护特定的Web资源,确保只有经过身份验证的用户才能访问。Spring Boot结合了Spring MVC框架,提供了方便的方式来实现这样的拦截器。本篇文章将深入...

    Nginx上配置Basic Authorization登录认服务证的教程

    关于Basic Authorization 在HTTP中,Basic Authorization基本认证是一种用来允许Web浏览器或其他客户端程序在请求时提供用户名和口令形式的身份凭证的一种登录验证方式。 在发送之前是以用户名追加一个冒号然后串接...

    Spring Cloud Feign统一设置验证token实现方法解析

    在微服务架构中, token验证是非常重要的安全机制之一,本文将主要介绍如何使用Spring Cloud Feign统一设置验证token实现方法解析。 首先,我们需要了解Feign组件的工作机制。Feign组件是一个基于Annotation的接口...

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

    这个Demo展示了如何使用Spring Boot的拦截器进行权限校验和登录验证。通过拦截器,我们可以统一处理这些常见的安全问题,而不是在每个控制器方法中重复同样的代码。这个简单的设计使得我们的应用更加模块化,更易于...

    webService添加basic验证

    ### WebService添加Basic验证详解 在现代Web应用中,安全性和数据保护至关重要。为了确保对外提供的WebService接口不被未授权的第三方访问,一种常见的做法就是在这些接口上实施身份验证机制。其中,Basic验证是一...

    登录拦截器(通用版)

    2. **授权(Authorization)**:验证身份后,登录拦截器会进行授权,即决定用户是否被允许访问请求的资源。这通常涉及到角色或权限的检查,例如管理员可以访问所有页面,而普通用户只能访问特定区域。 3. **会话...

    uni-app 请求拦截器

    【uni-app请求拦截器】是基于uni-app框架实现的一种机制,它允许开发者在发送网络请求前和接收到响应后执行自定义的操作。这种机制对于统一处理请求头、数据格式、错误处理以及添加全局的请求前后的逻辑非常有用,极...

    spring-security-oauth2-authorization-server.zip

    在这个项目中,我们将使用Spring Boot 2.1.7.RELEASE版本,这是Spring的一个轻量级启动器,简化了设置和配置过程。 首先,我们要了解Spring Security OAuth2的主要组件: 1. **Authorization Server**:这是项目的...

    Asp.net Mvc身份验证、异常处理、权限验证(拦截器)源码

    源码中可能包含了登录控制器的动作方法,如`Login`和`Authenticate`,以及相关的视图(`Views\Login`)用于接收用户输入并进行验证。 **异常处理(Exception Handling)** 异常处理是捕获、报告和处理运行时错误的...

    Struts2拦截器实现权限控制demo

    这里,我们创建了一个名为“myStack”的拦截器栈,并在其中添加了默认拦截器栈和我们自定义的`authorization`拦截器。 3. 应用拦截器:接下来,我们需要在Action配置中引用这个拦截器栈。这样,每次请求该Action时...

    spring-boot-basic-auth:使用基本身份验证的安全Spring Boot REST API

    在本文中,我们将深入探讨如何使用Spring Boot和Spring Security实现基于基本身份验证(Basic Authentication)的安全RESTful API。Spring Boot简化了创建独立、生产级别的基于Spring的应用程序,并且Spring ...

    feign之间相互通信RequestInterceptor拦截器失效相关代码

    Feign是Spring Cloud框架中的一个组件,用于实现声明式的REST客户端。它允许开发者定义接口,然后Feign会根据这些接口自动生成实现,使得调用远程服务就像调用本地方法一样简单。然而,在某些情况下,当两个Feign...

    vue 实现axios拦截、页面跳转和token 验证

    通过设置路由守卫、请求及响应拦截器,以及在后端加入跳转控制,可以构建起一套完整的权限验证机制。这不仅能有效防止未经授权的用户访问敏感页面,还能提升用户的体验,使其在token失效时能即时地被引导进行登录,...

    ajax 拦截器

    Ajax 拦截器是一种在发送或接收 AJAX 请求时进行拦截和处理的技术,它允许开发者在请求被发送到服务器之前或者响应返回之后执行自定义逻辑。这种技术在现代 web 应用开发中非常常见,特别是在需要对所有 AJAX 请求...

    RestTemplate如何通过HTTP Basic Auth认证.docx

    为了提高代码的复用性,我们可以创建一个拦截器(Interceptor)来自动处理 Basic Auth。在 Spring Boot 应用中,可以实现 `ClientHttpRequestInterceptor` 接口,然后将其注册到 RestTemplate 中。这样每次发送请求...

    详解Spring Security中的HttpBasic登录验证模式

    **Spring Security中的HttpBasic登录验证模式详解** **一、HttpBasic模式的应用场景** HttpBasic登录验证模式是Spring Security实现身份验证的一种基础方式。虽然这种方式相对简单,甚至可以说是简陋,但其主要...

    spring boot如何添加拦截器

    本文将详细介绍如何在Spring Boot项目中配置和使用拦截器。 首先,让我们从构建一个基础的Spring Boot项目开始。在你的项目结构中,通常会有一个主配置类(或称为启动类),它标记有`@SpringBootApplication`注解。...

    springCloud路由网管负载均衡及拦截过滤的简单实现.

    它基于Spring Framework 5、Project Reactor和Spring Boot 2构建,提供了一种简单的方式来为微服务架构定义路由规则,同时还支持过滤器链,可以进行权限校验、限流等操作。 1. 路由配置 在Spring Cloud Gateway中...

    正在处理-使用Spring Boot构建的Reddit克隆,使用JPA身份验证

    标题中的“正在处理-使用Spring Boot构建的Reddit克隆,使用JPA身份验证”表明这是一个基于Spring Boot开发的项目,其目标是实现一个类似于Reddit的功能,并且采用了Java Persistence API (JPA) 进行数据存储和管理...

    Go语言RPC Authorization进行简单ip安全验证的方法

    当服务端提供远程调用接口时,它需要对请求来源进行验证,以确保这些请求是由授权的客户端发出的。 在Go语言中,可以通过net包中的Listen函数来启动一个监听指定端口的RPC服务。服务端启动后,使用Accept函数来接收...

Global site tag (gtag.js) - Google Analytics