springboot+springmvc實(shí)現(xiàn)登錄攔截
這篇文章主要介紹了springboot+springmvc實(shí)現(xiàn)登錄攔截,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
- LoginInterceptor 實(shí)現(xiàn) HandlerInterceptor 接口,自定義攔截器處理方法
- LoginConfiguration 實(shí)現(xiàn) WebMvcConfigurer 接口,注冊(cè)攔截器
- ResourceBundle 加載 properties文件數(shù)據(jù),配置不進(jìn)行攔截的路徑
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);//不進(jìn)行攔截路徑
}
}
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
是一個(gè)加載properties文件的工具類。支持國(guó)際化。從classpath中加載配置文件。
文件命名方式 baseName_國(guó)別_語言.properties
ResourceBundle bundle = ResourceBundle.getBundle("res", new Locale("zh", "CN"));
new Locale("zh", "CN")這個(gè)對(duì)象就告訴了程序你的本地化信息。如果不指定則使用系統(tǒng)默認(rèn)的Locale。
- classpath下尋找res_zh_CN.properties 若不存在
- 那么會(huì)去找res_zh.properties,若還是不存在
- 則會(huì)去尋找res.properties,要還是找不到的話,那么就該拋異常了:MissingResourceException.
// login是資源文件的名稱。
ResourceBundle login = ResourceBundle.getBundle("login");//不指定locale會(huì)使用系統(tǒng)默認(rèn)的。
Exception in thread "main" java.util.MissingResourceException: Can't find bundle for base name login, locale zh_CN
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
詳解Java線程池如何實(shí)現(xiàn)優(yōu)雅退出
這篇文章我們將從源碼角度深度解析線程池是如何優(yōu)雅的退出程序的,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)java線程池有一定幫助,需要的可以參考一下2022-07-07
Java實(shí)戰(zhàn)之兼職平臺(tái)系統(tǒng)的實(shí)現(xiàn)
這篇文章主要介紹了如何利用Java編寫一個(gè)兼職平臺(tái)系統(tǒng),采用到的技術(shù)有Springboot、SpringMVC、MyBatis、ThymeLeaf等,感興趣的小伙伴可以了解一下2022-03-03
SpringBoot application.yml和bootstrap.yml的區(qū)別
本文主要介紹了SpringBoot application.yml和bootstrap.yml的區(qū)別,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-04-04

