springboot+springmvc实现登录拦截
作者:魔有追求 发布时间:2023-04-26 19:23:26
标签:spring,boot,mvc,登录,拦截
这篇文章主要介绍了springboot+springmvc实现登录拦截,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
LoginInterceptor 实现 HandlerInterceptor 接口,自定义 * 处理方法
LoginConfiguration 实现 WebMvcConfigurer 接口,注册 *
ResourceBundle 加载 properties文件数据,配置不进行拦截的路径
LoginInterceptor
package com.ytkj.smart_sand.system.interceptor;
import com.alibaba.fastjson.JSONObject;
import com.ytkj.smart_sand.base.DataResponse;
import com.ytkj.smart_sand.dict.user.Dic_sysuser_sessionkey;
import com.ytkj.smart_sand.pojo.user.SysUser;
import org.springframework.web.servlet.HandlerInterceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* @description:
* @author: changzhou.xie@yuantiaokj.com
* @date: 2019/10/21 17:04
*/
public class LoginInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
System.out.println("requestURI:" + request.getRequestURI());
SysUser sysUser = (SysUser) request.getSession().getAttribute(Dic_sysuser_sessionkey.CURRENT_USER);
if(sysUser == null){
DataResponse result = DataResponse.failure("0100", "用户没有登录");
response.setContentType("application/json;charset=UTF-8");
response.getWriter().write(JSONObject.toJSONString(result));
return false;
}
return true;
}
}
LoginConfiguration
package com.ytkj.smart_sand.config;
import com.ytkj.smart_sand.dict.system.Dict_decollator;
import com.ytkj.smart_sand.system.interceptor.LoginInterceptor;
import com.ytkj.smart_sand.system.properties.LoginInfoProperties;
import org.apache.commons.lang3.StringUtils;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
/**
* @description:
* @author: changzhou.xie@yuantiaokj.com
* @date: 2019/10/21 17:11
*/
@Configuration
public class LoginConfiguration implements WebMvcConfigurer {
/*
注意拦截路径的写法:
/**/*.html 表示所有的html文件。
/img/** 表示img目录下的所有文件。
*/
@Override
public void addInterceptors(InterceptorRegistry registry) {
String paths = LoginInfoProperties.getValue("loginReleasePaths");
String[] loginReleasePaths;
if(StringUtils.isNotBlank(paths)){
loginReleasePaths = paths.split(Dict_decollator.ENG_COMMA);
}else{
loginReleasePaths = new String[0];
}
registry.addInterceptor(new LoginInterceptor())
.addPathPatterns("/**")//拦截路径
.excludePathPatterns(loginReleasePaths);//不进行拦截路径
}
}
LoginInfoProperties
package com.ytkj.smart_sand.system.properties;
import java.util.MissingResourceException;
import java.util.ResourceBundle;
/**
* @description:
* @author: changzhou.xie@yuantiaokj.com
* @date: 2019/10/21 16:59
*/
public class LoginInfoProperties {
private static final String LOGIN = "login";
private static ResourceBundle LOGIN_BUNDLE = ResourceBundle.getBundle(LOGIN);
public static String getValue(String key){
try {
return LOGIN_BUNDLE.getString(key);
} catch (MissingResourceException e) {
e.printStackTrace();
}
return "";
}
}
login.properties
# main/resources/login.properties
# /**/*.html 表示所有的html文件。
# /img/** 表示img目录下的所有文件。
loginReleasePaths=/img/**,\
/**/*.html,\
/user/login/pc
ResourceBundle
是一个加载properties文件的工具类。支持国际化。从classpath中加载配置文件。
文件命名方式 baseName_国别_语言.properties
ResourceBundle bundle = ResourceBundle.getBundle("res", new Locale("zh", "CN"));
new Locale("zh", "CN")这个对象就告诉了程序你的本地化信息。如果不指定则使用系统默认的Locale。
classpath下寻找res_zh_CN.properties 若不存在
那么会去找res_zh.properties,若还是不存在
则会去寻找res.properties,要还是找不到的话,那么就该抛异常了:MissingResourceException.
// login是资源文件的名称。
ResourceBundle login = ResourceBundle.getBundle("login");//不指定locale会使用系统默认的。
Exception in thread "main" java.util.MissingResourceException: Can't find bundle for base name login, locale zh_CN
来源:https://www.cnblogs.com/mozq/p/11715708.html


猜你喜欢
- Spring MVC 请求处理流程用户发起请求,到 DispatcherServlet;然后到 HandlerMapping 返回处理器链(
- 本文介绍了spring整合JMS实现同步收发消息(基于ActiveMQ的实现),分享给大家,具体如下:1. 安装ActiveMQ注意:JDK
- 本文实例讲述了Android编程开发之TextView控件用法。分享给大家供大家参考,具体如下:这里我们会讲讲常用控件的使用。在今后的大多数
- 最近做一个C#项目,需要对radis进行读写。首先引入System.Configuration,如下实现代码如下:public class
- 前言项目中有需求在APP的Webview中长按图片可以保存。后来就去研究一下该怎么实现,顺便整理了一下。WebView基本配置mWvCont
- 相信大家使用多点对图片进行缩放,平移的操作很熟悉了,大部分大图的浏览都具有此功能,有些app还可以对图片进行旋转操作,QQ的大图浏览就可以对
- 本文实例讲述了Java Web实现添加定时任务的方法。分享给大家供大家参考,具体如下:定时任务时间控制类/** * 定时任务时间控制 * *
- 前面有写到Spring+SpringMVC+MyBatis深入学习及搭建(二)——MyBatis原始Dao开发和mapper代理开发MyBa
- 本文实例为大家分享了Android ViewPager指示器的制作方法,供大家参考,具体内容如下1.概述ViewPageIndicator这
- * 其实就是java.lang.reflect.Proxy类动态的根据您指定的所有接口生成一个class byte,该class会继承P
- 在进行持久层数据维护(新增或修改)的时候,我们通常需要记录一些非业务字段,比如:create_time、update_time、update
- 本文实例讲述了Java常用内置注解。分享给大家供大家参考,具体如下:一 通过@SuppressWarnings关闭警告信息1 代码publi
- 常用命令:打包:mvn package编译:mvn compile清空:mvn clean(清除编译后目录,默认是target目录)运行测试
- 这两天实现了下新手引导需要的遮罩镂空shader效果,记录一下。1、圆形镂空shader代码:  
- 闹钟的简单实现,只有显示时间和设置闹钟。AlarmViewpackage com.example.lenovo.clock2; import
- 入队(EnQueue) 、出队(TryDequeue) 、是否为空(IsEmpty)、获取队列内元素数量(Count)。一、Concurre
- 先随便搞个事件吧public class TestEventrgs : EventArgs {private st
- JPA介绍JPA(Java Persistence API)是Sun官方提出的Java持久化规范。它为Java开发人员提供了一种对象/关联映
- 今天新建项目的时候突然发现编译后运行按钮为灰色。解决方案:第一步:点击图中的Add Configuration,出来如下界面第二步:点+号,
- <FrameLayout &