软件编程
位置:首页>> 软件编程>> java编程>> springboot+springmvc实现登录拦截

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

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com