java拦截器_Java拦截器实现「建议收藏」

java拦截器_Java拦截器实现「建议收藏」java拦截器实现功能类似于aop功能的实现,实现拦截部分方法,一般用于类似登录进入A页面,未登录进入B页面实现方法有两种实现Interceptor接口或者继承HandlerInterceptorAdapter类,实现接口需要实现其中所有方法,继承抽象类则一般实现preHandle方法即可。首先配置拦截类packagenet.parim.spark.portal.adapter;im…

大家好,又见面了,我是你们的朋友全栈君。

java拦截器实现功能类似于aop功能的实现,实现拦截部分方法,一般用于类似 登录进入A页面,未登录进入B页面

实现方法有两种 实现Interceptor 接口 或者 继承HandlerInterceptorAdapter类,实现接口需要实现其中所有方法,继承抽象类则一般实现preHandle方法即可。

首先配置拦截类

package net.parim.spark.portal.adapter;

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.Configuration;

import org.springframework.web.servlet.config.annotation.InterceptorRegistry;

import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;

@Configuration

public class HomeOpenHandlerConfigration extends WebMvcConfigurerAdapter {

//关键,将拦截器作为bean写入配置中

@Bean

public HomeOpenInterceptor myInterceptor(){

return new HomeOpenInterceptor();

}

@Override

public void addInterceptors(InterceptorRegistry registry) {

registry.addInterceptor(myInterceptor()).addPathPatterns(“/api/open/portal/**”)

.excludePathPatterns(“/api/open/footerInfo”).excludePathPatterns(“/api/open/portal/template/default”);

super.addInterceptors(registry);

}

}

addPathPatterns()方法为需要拦截的api,excludePathPatterns()方法为不需要拦截的接口api

配置拦截逻辑

package net.parim.spark.portal.adapter;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import org.apache.shiro.SecurityUtils;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.stereotype.Component;

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

import net.parim.spark.common.config.ApplicationProperties;

import net.parim.spark.common.exceptions.BusinessException;

import net.parim.spark.core.system.constant.Constants;

import net.parim.spark.core.system.entity.Site;

import net.parim.spark.core.system.security.UserToken;

import net.parim.spark.core.system.security.exceptions.UnauthenticatedException;

import net.parim.spark.portal.service.PortalCommonService;

/**

* 首页外放拦截器

* @author liweiqiang

*

*/

@Component

public class HomeOpenInterceptor extends HandlerInterceptorAdapter {

@Autowired

private PortalCommonService portalCommonService;

@Autowired

private ApplicationProperties applicationProperties;

@Override

public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)

throws Exception {

//判断是否需要拦截

Boolean flag = false;

if(flag){

//判断是否允许不登录的情况下 访问主页

//如果不允许匿名访问返回401

throw new UnauthenticatedException();

}

//否则允许直接放过,不进行任何拦截

return true;

}

}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/132400.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 网络基础之网络协议

    一.操作系统基础操作系统:(OperatingSystem,简称OS)是管理和控制计算机硬件与软件资源的计算机程序,是直接运行在“裸机”上的最基本的系统软件,任何其他软件都必须在操作系统的支持下才

    2022年3月29日
    37
  • 搞懂JavaScript全局变量与局部变量,看这篇文章就够了[通俗易懂]

    搞懂JavaScript全局变量与局部变量,看这篇文章就够了[通俗易懂]<scripttype=”text/javascript”>vara=”Hello”;functiontest(){vara;console.log(a);a=”World”;console.log(a);}//undefined//Worldvarb=”Hello”;fun…

    2022年4月26日
    39
  • Linux下kafka集群安装配置

    Linux下kafka集群安装配置下载kafkahttps://kafka.apache.org/downloads#2.3.1解压tar-zxvfkafka_2.12-2.3.1.tgz配置server.xmlcd/usr/local/kafka/kafka_2.12-2.3.1/configviserver.xml本次设置三个节点,配置内容如下192.168.0.1broker.id…

    2022年5月24日
    27
  • Linux文本编辑器——vim编译器的全面讲解[通俗易懂]

    Linux文本编辑器——vim编译器的全面讲解[通俗易懂]vim编译器一概述二vim编译器常用的操作命令2.1vim编辑器的启动和退出2.2文件的打开和读取2.3文件保存与另存为2.4vim编辑器的删除与撤销2.5vim编辑器的复制与粘贴2.6vim编辑器的查找与替换三vim输入模式常见操作3.1快速进入输入模式3.2快速移动编辑四vim命令模式常见操作4.1行内快速跳转4.2行间快速跳转

    2022年7月26日
    6
  • oracle client 环境不满足最低要求_oracle11g安装环境不满足最低要求

    oracle client 环境不满足最低要求_oracle11g安装环境不满足最低要求为什么需要oinstall,dba两个组一个是控制软件安装,补丁安装等的;另一个是控制数据库创建,数据库管理等的。你可以将两个权限都授权给dba组,只创建dba一个组就可以了。角色细化而已,另外oracle还要求redo日志、控制文件分不同盘放,数据安全要求而已2、usr/sbin/useradd-m-goinstall-Gdbaoracle什么意思??创建了一个新的UNIX/LINUX用户,-m表示如果已经有这个用户不报错,-g是组,-G是其他组,最后是用户名m表示为用

    2022年9月26日
    3
  • js中倒计时_js倒计时特效

    js中倒计时_js倒计时特效利用setInterval制作简单的js倒计时,点击按钮将触发定时器且按钮不可用html:获取校验码JS: vari; functiongetCode(){ $(“#code”).attr({“disabled”:”disabled”}); i=self.setInterval(“countdown()”,1000); } varint=1

    2022年10月4日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号