最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot登錄用戶權(quán)限攔截器

 更新時(shí)間:2021年03月21日 14:23:24   作者:strive_day  
這篇文章主要介紹了SpringBoot登錄用戶權(quán)限攔截器,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

1. 創(chuàng)建自定義攔截器類并實(shí)現(xiàn) HandlerInterceptor 接口

package com.xgf.online_mall.interceptor;

import com.xgf.online_mall.system.domain.User;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.logging.SimpleFormatter;

@Slf4j
@Component
public class UserLoginAuthInterceptor implements HandlerInterceptor {
  @Override
  public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
    log.info(" ======== UserAuthInterceptor preHandle 登錄權(quán)限攔截器攔截");
    User user = (User) request.getSession().getAttribute("loginUser");
    //未登錄才判斷,登錄了直接放行
    if(user == null){
      //獲取訪問(wèn)路徑
      String address = request.getRequestURI();
      log.info("======== 攔截,訪問(wèn)路徑 address : {}", address);
      response.sendRedirect(request.getContextPath() + "/login.html");
      return false;

      /*String address = request.getRequestURI();
      log.info("======== 攔截,訪問(wèn)路徑 address : {}", address);
      //不是登錄或者注冊(cè)頁(yè)面,就直接跳轉(zhuǎn)登錄界面
      if(!address.contains("login") && !address.contains("register")){
        //強(qiáng)制到登錄頁(yè)面
        response.sendRedirect(request.getContextPath() + "/login.html");
        //設(shè)置為false,不訪問(wèn)controller
        return false;
      }*/
    }
    //其它模塊或者已經(jīng)登錄,就直接放行
//    log.info("======== 已登錄 user = {}", user);
    return true;
  }


  @Override
  public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
    log.info(" ===== UserAuthInterceptor postHandle");
  }

  @Override
  public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
    log.info("==== UserAuthInterceptor afterCompletion");

    //記錄日志 向文件里面寫(xiě)日志
    //獲取服務(wù)器記錄日志log文件所存放的目錄位置 -- tomcat下的真實(shí)路徑+log目錄
    String logdir = request.getServletContext().getRealPath("log");
    //路徑不存在就創(chuàng)建
    Path logdirPath = Paths.get(logdir);
    if(Files.notExists(logdirPath)){
      Files.createDirectories(logdirPath);
    }
    //目錄存在就將數(shù)據(jù)[字符]寫(xiě)入 //存放日志的路徑+文件名
    Path logfile = Paths.get(logdir,"userlog.log");
    //logfile.toFile() paths轉(zhuǎn)換為File類型 true以追加的方式寫(xiě)入
    BufferedWriter writer = new BufferedWriter(new FileWriter(logfile.toFile(),true));

    //獲取登錄用戶信息
    User user = (User)request.getSession().getAttribute("loginUser");
    //記錄user信息,存入日志
    writer.write(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()) + " >> " + user +"\r\n");
    writer.flush();
    writer.close();
  }
}

2. 創(chuàng)建WebMvcConfigurer接口實(shí)現(xiàn)類,注冊(cè)并生效自定義的攔截器

import com.xgf.online_mall.constant.PathConstantParam;
import com.xgf.online_mall.interceptor.UserLoginAuthInterceptor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

import java.util.ArrayList;
import java.util.List;

@Configuration
@Slf4j
public class LoginConfig implements WebMvcConfigurer {
  @Autowired
  private UserLoginAuthInterceptor userLoginAuthInterceptor;

  /**
   * addInterceptors方法設(shè)置攔截路徑
   *   addPathPatterns:需要攔截的訪問(wèn)路徑
   *   excludePathPatterns:不需要攔截的路徑,
   *   String數(shù)組類型可以寫(xiě)多個(gè)用","分割
   * @param registry
   */
  @Override
  public void addInterceptors(InterceptorRegistry registry){
    log.info(" ======== LoginConfig.addInterceptors");
    //添加對(duì)用戶未登錄的攔截器,并添加排除項(xiàng)
    //error路徑,excludePathPatterns排除訪問(wèn)的路徑在項(xiàng)目中不存在的時(shí)候,
    //springboot會(huì)將路徑變成 /error, 導(dǎo)致無(wú)法進(jìn)行排除。
    registry.addInterceptor(userLoginAuthInterceptor)
        .addPathPatterns("/**")
        .excludePathPatterns("/js/**", "/css/**", "/img/**", "/plugins/**")
        .excludePathPatterns("/login.html", "/register.html", "/system/user/login", "/system/user/login", "/index")
        .excludePathPatterns("/error");
  }
 }

到此這篇關(guān)于SpringBoot登錄用戶權(quán)限攔截器的文章就介紹到這了,更多相關(guān)SpringBoot 用戶權(quán)限攔截器內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java 語(yǔ)言守護(hù)線程 Daemon Thread使用示例詳解

    Java 語(yǔ)言守護(hù)線程 Daemon Thread使用示例詳解

    這篇文章主要為大家介紹了Java 語(yǔ)言守護(hù)線程 Daemon Thread使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-10-10
  • JAVA使用DBUtils操作數(shù)據(jù)庫(kù)

    JAVA使用DBUtils操作數(shù)據(jù)庫(kù)

    這篇文章主要介紹了JAVA使用DBUtils操作數(shù)據(jù)庫(kù)的相關(guān)資料,文中示例代碼非常詳細(xì),幫助大家學(xué)習(xí)JAVA,感興趣的朋友可以了解下
    2020-07-07
  • Spring中的注解之@Override和@Autowired

    Spring中的注解之@Override和@Autowired

    看別人寫(xiě)的代碼,經(jīng)常會(huì)用到 @Override 和 @Autowired 這兩個(gè)注解.這邊總結(jié)一下這兩個(gè)注解的作用,對(duì)正在學(xué)習(xí)java的小伙伴們有很好地幫助,需要的朋友可以參考下
    2021-05-05
  • Java Shutdown Hook場(chǎng)景使用及源碼分析

    Java Shutdown Hook場(chǎng)景使用及源碼分析

    shutdown hook 就是一個(gè)簡(jiǎn)單的已初始化但是未啟動(dòng)的線程,本文詳細(xì)的介紹了Java Shutdown Hook場(chǎng)景使用及源碼分析,感興趣的朋友可以參考一下
    2021-06-06
  • Java報(bào)錯(cuò)net.dean.jraw.http.NetworkException異常的原因及解決方法

    Java報(bào)錯(cuò)net.dean.jraw.http.NetworkException異常的原因及解決方法

    在開(kāi)發(fā)涉及網(wǎng)絡(luò)通信的Java應(yīng)用程序時(shí),我們經(jīng)常需要處理各種網(wǎng)絡(luò)異常,net.dean.jraw.http.NetworkException是在使用jRAW庫(kù)時(shí)可能遇到的一個(gè)異常,本文將詳細(xì)探討NetworkException的成因,并提供多種解決方案,需要的朋友可以參考下
    2024-12-12
  • idea中g(shù)it如何刪除commit提交的log信息

    idea中g(shù)it如何刪除commit提交的log信息

    這篇文章主要介紹了idea中g(shù)it如何刪除commit提交的log信息問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • 一文詳解Spring事務(wù)的實(shí)現(xiàn)與本質(zhì)

    一文詳解Spring事務(wù)的實(shí)現(xiàn)與本質(zhì)

    這篇文章主要介紹了Spring中事務(wù)的兩種實(shí)現(xiàn)方式:聲明式事務(wù)、編程式事務(wù)以及他們的本質(zhì)。文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-04-04
  • 使用spring容器在初始化Bean時(shí)前和后的操作

    使用spring容器在初始化Bean時(shí)前和后的操作

    這篇文章主要介紹了使用spring容器在初始化Bean時(shí)前和后的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • 解決Beanutils.copyproperties實(shí)體類對(duì)象不一致的問(wèn)題

    解決Beanutils.copyproperties實(shí)體類對(duì)象不一致的問(wèn)題

    這篇文章主要介紹了解決Beanutils.copyproperties實(shí)體類對(duì)象不一致的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • 利用Java代碼寫(xiě)一個(gè)并行調(diào)用模板

    利用Java代碼寫(xiě)一個(gè)并行調(diào)用模板

    這篇文章主要介紹了利用Java代碼寫(xiě)一個(gè)并行調(diào)用模板,文章基于Java的相關(guān)內(nèi)容展開(kāi)寫(xiě)一個(gè)并行調(diào)用模板的詳細(xì)介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-05-05

最新評(píng)論

镇宁| 景德镇市| 广饶县| 来安县| 襄垣县| 祁东县| 蒲城县| 武平县| 深水埗区| 铁岭市| 建瓯市| 廉江市| 衡山县| 福鼎市| 新蔡县| 阜平县| 旬邑县| 鹰潭市| 历史| 临西县| 巫溪县| 谷城县| 靖宇县| 伊宁县| 远安县| 滦南县| 双峰县| 宁波市| 黄龙县| 克山县| 宣恩县| 乌鲁木齐县| 兴仁县| 灵台县| 资兴市| 马公市| 凌源市| 永仁县| 介休市| 温州市| 龙海市|