老熟女激烈的高潮_日韩一级黄色录像_亚洲1区2区3区视频_精品少妇一区二区三区在线播放_国产欧美日产久久_午夜福利精品导航凹凸

重慶分公司,新征程啟航

為企業(yè)提供網(wǎng)站建設(shè)、域名注冊(cè)、服務(wù)器等服務(wù)

SpringBoot攔截器實(shí)現(xiàn)登錄攔截的方法示例

源碼

創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),封丘企業(yè)網(wǎng)站建設(shè),封丘品牌網(wǎng)站建設(shè),網(wǎng)站定制,封丘網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷,網(wǎng)絡(luò)優(yōu)化,封丘網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力。可充分滿足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。

GitHub:https://github.com/291685399/springboot-learning/tree/master/springboot-interceptor01

SpringBoot攔截器可以做什么

可以對(duì)URL路徑進(jìn)行攔截,可以用于權(quán)限驗(yàn)證、解決亂碼、操作日志記錄、性能監(jiān)控、異常處理等

SpringBoot攔截器實(shí)現(xiàn)登錄攔截

pom.xml:

<?xml version="1.0" encoding="UTF-8"?>

  4.0.0
  
    org.springframework.boot
    spring-boot-starter-parent
    2.0.0.RELEASE
    
  
  com.wyj
  springboot-interceptor01
  0.0.1-SNAPSHOT
  springboot-interceptor01
  springboot攔截器

  
    1.8
  

  
    
    
      org.springframework.boot
      spring-boot-starter-web
    
    
      org.springframework.boot
      spring-boot-starter-test
      test
    
    
      org.springframework.boot
      spring-boot-devtools
      runtime
      true
    

    
    
      org.projectlombok
      lombok
      true
    

    
    
      org.springframework.boot
      spring-boot-starter-thymeleaf
    
  

  
    springboot-interceptor01
    
      
        org.springframework.boot
        spring-boot-maven-plugin
      
    
  

WebMvcConfigurer:繼承WebMvcConfigurationSupport類,重寫(xiě)addInterceptors方法

/**
 * 在springboot2.0.0之后,WebMvcConfigurerAdapter已經(jīng)過(guò)時(shí)了
 * 會(huì)使用WebMvcConfigurer或者WebMvcConfigurationSupport替代
 *
 * @author wyj
 * @create 2019-06-01 21:48
 */
@Configuration
public class WebMvcConfigurer extends WebMvcConfigurationSupport {

  /**
   * 在springboot2.0.0之前繼承WebMvcConfigurerAdapter類,重寫(xiě)addInterceptors方法
   *
   * @param registry
   */
//  @Override
//  public void addInterceptors(InterceptorRegistry registry) {
//    /**
//     * 攔截器按照順序執(zhí)行,如果不同攔截器攔截存在相同的URL,前面的攔截器會(huì)執(zhí)行,后面的攔截器將不執(zhí)行
//     */
//    registry.addInterceptor(new AuthorityInterceptor())
//        .addPathPatterns("/user/**");
//    super.addInterceptors(registry);
//  }

  /**
   * 在springboot2.0.0之后實(shí)現(xiàn)WebMvcConfigurer接口,重寫(xiě)addInterceptors方法
   *
   * @param registry
   */
//  @Override
//  public void addInterceptors(InterceptorRegistry registry) {
//    /**
//     * 攔截器按照順序執(zhí)行,如果不同攔截器攔截存在相同的URL,前面的攔截器會(huì)執(zhí)行,后面的攔截器將不執(zhí)行
//     */
//    registry.addInterceptor(new AuthorityInterceptor())
//        .addPathPatterns("/user/**");
//  }

  /**
   * 在springboot2.0.0之后繼承WebMvcConfigurationSupport類,重寫(xiě)addInterceptors方法
   *
   * @param registry
   */
  @Override
  protected void addInterceptors(InterceptorRegistry registry) {
    /**
     * 攔截器按照順序執(zhí)行,如果不同攔截器攔截存在相同的URL,前面的攔截器會(huì)執(zhí)行,后面的攔截器將不執(zhí)行
     */
    registry.addInterceptor(new AuthorityInterceptor())
        .addPathPatterns("/user/**");
    super.addInterceptors(registry);
  }
}

AuthorityInterceptor:實(shí)現(xiàn)HandlerInterceptor接口,重寫(xiě)preHandle、postHandle、afterCompletion方法

  • preHandle:在請(qǐng)求處理之前進(jìn)行調(diào)用(Controller方法調(diào)用之前)
  • postHandle:請(qǐng)求處理之后進(jìn)行調(diào)用,但是在視圖被渲染之前(Controller方法調(diào)用之后)
  • afterCompletion:在整個(gè)請(qǐng)求結(jié)束之后被調(diào)用,也就是在DispatcherServlet 渲染了對(duì)應(yīng)的視圖之后執(zhí)行(主要是用于進(jìn)行資源清理工作)
@Slf4j
public class AuthorityInterceptor implements HandlerInterceptor {

  private static final Set NOT_INTERCEPT_URI = new HashSet<>();//不攔截的URI

  static {
    NOT_INTERCEPT_URI.add("/user/login.html");
    NOT_INTERCEPT_URI.add("/user/login");
  }

  /**
   * 在請(qǐng)求處理之前進(jìn)行調(diào)用(Controller方法調(diào)用之前)
   */
  @Override
  public boolean preHandle(HttpServletRequest request, HttpServletResponse response,
               Object object) throws Exception {
    String uri = request.getRequestURI();
    if (NOT_INTERCEPT_URI.contains(uri)) {
      log.info("不攔截" + uri);
      return true;
    }
    log.info("攔截" + uri);
    HttpSession session = request.getSession();
    UserInfo userInfo = (UserInfo) session.getAttribute("user_info_in_the_session");
    if (userInfo == null) {
      throw new RuntimeException("用戶未登陸");
    }
    return true;
  }

  /**
   * 請(qǐng)求處理之后進(jìn)行調(diào)用,但是在視圖被渲染之前(Controller方法調(diào)用之后)
   */
  @Override
  public void postHandle(HttpServletRequest request, HttpServletResponse response, Object object, ModelAndView mv) throws Exception {
  }

  /**
   * 在整個(gè)請(qǐng)求結(jié)束之后被調(diào)用,也就是在DispatcherServlet 渲染了對(duì)應(yīng)的視圖之后執(zhí)行
   * (主要是用于進(jìn)行資源清理工作)
   */
  @Override
  public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object object, Exception ex) throws Exception {
  }
}

UserController:

@Controller
@RequestMapping(value = "/user")
public class UserController {

  @RequestMapping(value = "/login.html")
  public String index() {
    return "login";
  }

  @RequestMapping(value = "/login")
  public String login(User user) {
    //查詢數(shù)據(jù)庫(kù),我這里直接寫(xiě)死
    User dbUser = new User(1, "zhangsan", "123456", "admin");
    if (dbUser.getPassword().equals(user.getPassword())) {
      UserInfo userInfo = new UserInfo(dbUser.getId(), dbUser.getUsername(), dbUser.getRole());
      HttpSession session = getRequest().getSession();
      session.setAttribute("user_info_in_the_session", userInfo);
      return "admin";
    }
    return "login";
  }

  @RequestMapping(value = "/userInfo")
  @ResponseBody
  public String userInfo() {
    HttpSession session = getRequest().getSession();
    UserInfo userInfo = (UserInfo) session.getAttribute("user_info_in_the_session");
    return userInfo.toString();
  }

  private HttpServletRequest getRequest() {
    return ((ServletRequestAttributes) RequestContextHolder.currentRequestAttributes()).getRequest();
  }
}

User:

@Data
@NoArgsConstructor
@AllArgsConstructor
public class User implements Serializable {

  private int id;
  private String username;
  private String password;
  private String role;

}

UserInfo: 用于存在用戶信息儲(chǔ)存在session中

@Data
@NoArgsConstructor
@AllArgsConstructor
public class UserInfo implements Serializable {

  private int id;
  private String username; 
  private String role;

}

login.html:只是一個(gè)很簡(jiǎn)單的登錄表單




  
  登陸頁(yè)面


登陸:
用戶名:
密   碼:

admin.html:




  
  首頁(yè)


以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。


新聞名稱:SpringBoot攔截器實(shí)現(xiàn)登錄攔截的方法示例
標(biāo)題來(lái)源:http://www.xueling.net.cn/article/iieihp.html

其他資訊

在線咨詢
服務(wù)熱線
服務(wù)熱線:028-86922220
TOP
主站蜘蛛池模板: 女人把腿张开让男人来桶 | www一级片 | 色综合久久精品亚洲国产消防 | 国产精品中文在线 | 800AV凹凸视频免费观看 | 日韩在线中文高清在线资源 | 青青草97国产精品麻豆 | 国产国语一级A毛片高清视频 | 午夜国产一区二区三区四区 | 欧美日韩一级有码在线视频 | 男人的天堂视频精品乱在线 | 日本一区二区三区不卡免费 | 凹凸世界第三季免费 | 色翁荡息又大又硬又粗又视频软件 | 精品av天堂毛片久久久 | 欧美精品在线免费观看 | 无码精品久久一区二区三区 | 国产成人久久AV一区二区 | 国内精品久久久久久 | 天天骑夜夜操 | 脱了内裤猛烈进入A片费 | 欧美一区永久视频免费观看 | 人妖一区二区三区 | ww九九| 91精品一区二区三区在线 | 婷婷夜色潮精品综合在线 | 99爱免费视频 | 中文字幕一区二区三区四区不卡 | 久99久人碰人视频在线 | 日韩亚洲综合在线 | 国产乱子夫妻XX黑人XYX真爽 | 免费a国产 | 欧洲成人午夜精品无码区久久 | 国产五码一区 | 国产成人久 | 26uuu婷婷| 国产成人精品亚洲精品 | 久久99精品国产麻豆婷婷洗澡 | 久久婷婷六月 | 亚洲午夜久久久久 | 啊轻点灬大ji巴太粗太长了日本 |