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

基于SpringBoot實(shí)現(xiàn)用戶(hù)身份驗(yàn)證工具

 更新時(shí)間:2018年04月03日 10:22:09   作者:玩具熊貓  
這篇文章主要介紹了基于SpringBoot實(shí)現(xiàn)的用戶(hù)身份驗(yàn)證工具,非常不錯(cuò),具有參考借鑒價(jià)值 ,需要的朋友可以參考下

session失效時(shí)間

 在Tomcat上,session的默認(rèn)有效時(shí)間是30分鐘。也可以通過(guò)配置文件修改session的有效時(shí)間。

 1)修改web.xml

<!-- 設(shè)置session失效,單位分 --> 
<session-config> 
  <session-timeout>1</session-timeout> 
</session-config>

2).yml文件

server.session.cookie.http-only= #是否開(kāi)啟HttpOnly 
server.session.timeout = #會(huì)話(huà)超時(shí)(秒) 

使用過(guò)濾器獲取session進(jìn)行身份驗(yàn)證(未全部測(cè)試,慎用)

1)新建Filter

import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.boot.web.servlet.ServletComponentScan; 
import org.springframework.context.ApplicationContext; 
import org.springframework.stereotype.Component; 
import org.springframework.web.context.support.WebApplicationContextUtils; 
import javax.servlet.*; 
import javax.servlet.annotation.WebFilter; 
import javax.servlet.http.HttpServletRequest; 
import java.io.IOException; 
@Component 
@ServletComponentScan//讓@WebFilter起作用 
@WebFilter(urlPatterns = "/*") 
public class MyFilter implements Filter{ 
  @Autowired 
  private SessionKeyConfigProperties sessionKeyConfigProperties; 
  @Override 
  public void init(FilterConfig filterConfig) throws ServletException { 
  } 
  @Override 
  public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) 
      throws IOException, ServletException { 
    HttpServletRequest httpServletRequest = (HttpServletRequest) servletRequest; 
    System.out.println(sessionKeyConfigProperties.getUserTypeKey()); 
    //通過(guò)session獲取身份信息 
    AuthenticationUtil authenticationUtil = new AuthenticationUtil(sessionKeyConfigProperties); 
    UserTypeEnum userType = authenticationUtil.getUserAuthentication(httpServletRequest.getSession()); 
    //進(jìn)行認(rèn)證 
    //認(rèn)證失敗 
    if(userType == null){ 
      //... 
    } 
    //用戶(hù)不是管理員 
    if(userType != UserTypeEnum.ADMIN){ 
      //... 
    } 
    filterChain.doFilter(servletRequest,servletResponse); 
  } 
  @Override 
  public void destroy() { 
  } 
} 

細(xì)心的讀者會(huì)發(fā)現(xiàn)我用了AuthenticationUtil,這是為了將讀寫(xiě)用戶(hù)身份認(rèn)證信息的功能分離而設(shè)計(jì)的工具類(lèi)  2)AuthenticationUtil類(lèi)

import org.apache.shiro.web.session.HttpServletSession; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpSession; 
public class AuthenticationUtil { 
  private SessionKeyConfigProperties configProperties; 
  public AuthenticationUtil(SessionKeyConfigProperties configProperties) { 
    this.configProperties = configProperties; 
  } 
  /** 
   * 從session中獲取用戶(hù)的身份類(lèi)型 
   * @param session 
   * @return 身份類(lèi)型 
   */ 
  public UserTypeEnum getUserAuthentication(HttpSession session){ 
    //獲取session中的用戶(hù)信息記錄 
    Object userType = session.getAttribute(configProperties.getUserTypeKey()); 
    //獲取session中記錄的用戶(hù)類(lèi)型 
    if(userType != null && userType instanceof UserTypeEnum) { 
      return (UserTypeEnum)userType; 
    } 
    return null; 
  } 
  /** 
   * 將用戶(hù)的身份寫(xiě)入session中 
   * @param session 
   * @param userType 
   */ 
  public void setUserAuthentication(HttpSession session,UserTypeEnum userType){ 
    session.setAttribute(configProperties.getUserTypeKey(),userType); 
  } 
} 

3)配置文件SessiionKeyConfig.properties

user_type_key = userTypeKey 

4)配置讀取文件SessionKeyConfigProperties.class

import org.springframework.beans.factory.annotation.Value; 
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource; 
import org.springframework.stereotype.Component; 
@Configuration 
@PropertySource("classpath:config/SessiionKeyConfig.properties") 
@Component 
public class SessionKeyConfigProperties { 
  @Value("${user_type_key}") 
  private String userTypeKey; 
  public String getUserTypeKey() { 
    return userTypeKey; 
  } 
  public void setUserTypeKey(String userTypeKey) { 
    this.userTypeKey = userTypeKey; 
  } 
} 

5)Enum類(lèi)

public enum UserTypeEnum { 
  ADMIN, 
  USER 
} 

注:本文刪除了一些package信息及部分import信息。Enum類(lèi)和配置類(lèi)的內(nèi)容請(qǐng)根據(jù)項(xiàng)目需求及數(shù)據(jù)字典自行修改。

總結(jié)

以上所述是小編給大家介紹的基于SpringBoot實(shí)現(xiàn)用戶(hù)身份驗(yàn)證工具,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

  • 一篇文章弄懂JVM類(lèi)加載機(jī)制過(guò)程以及原理

    一篇文章弄懂JVM類(lèi)加載機(jī)制過(guò)程以及原理

    JVM原理對(duì)于初學(xué)者而言,比較晦澀難以理解,概念繁多又比較抽象,很多時(shí)候感覺(jué)看不見(jiàn)摸不著,還不好驗(yàn)證,下面這篇文章主要給大家介紹了關(guān)于如何通過(guò)一篇文章弄懂JVM類(lèi)加載機(jī)制過(guò)程及原理的相關(guān)資料,需要的朋友可以參考下
    2023-02-02
  • jvm中指定時(shí)區(qū)信息user.timezone問(wèn)題及解決方式

    jvm中指定時(shí)區(qū)信息user.timezone問(wèn)題及解決方式

    同一份程序使用時(shí)間LocalDateTime類(lèi)型,在國(guó)內(nèi)和國(guó)外部署后,返回的時(shí)間信息前端使用出問(wèn)題,這篇文章主要介紹了jvm中指定時(shí)區(qū)信息user.timezone問(wèn)題及解決方法,需要的朋友可以參考下
    2023-02-02
  • Java實(shí)現(xiàn)雙色球抽獎(jiǎng)隨機(jī)算法示例

    Java實(shí)現(xiàn)雙色球抽獎(jiǎng)隨機(jī)算法示例

    本篇文章主要介紹了Java實(shí)現(xiàn)雙色球抽獎(jiǎng)隨機(jī)算法示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-06-06
  • Java設(shè)計(jì)模式之職責(zé)鏈模式詳解

    Java設(shè)計(jì)模式之職責(zé)鏈模式詳解

    Java設(shè)計(jì)模式中有很多種類(lèi)別,例如單例模式、裝飾模式、觀(guān)察者模式等。本文將為大家詳細(xì)介紹其中的職責(zé)鏈模式,感興趣的可以了解一下
    2021-12-12
  • Java中ArrayList類(lèi)用法詳解

    Java中ArrayList類(lèi)用法詳解

    這篇文章主要給大家介紹了關(guān)于Java中ArrayList類(lèi)用法的相關(guān)資料,ArrayList是Java中的一種常見(jiàn)的數(shù)據(jù)結(jié)構(gòu),它實(shí)現(xiàn)了List接口,是線(xiàn)程不安全的動(dòng)態(tài)數(shù)組,需要的朋友可以參考下
    2023-09-09
  • Java傳值調(diào)用和傳引用調(diào)用方式(參數(shù)引用為null問(wèn)題)

    Java傳值調(diào)用和傳引用調(diào)用方式(參數(shù)引用為null問(wèn)題)

    這篇文章主要介紹了Java傳值調(diào)用和傳引用調(diào)用方式(參數(shù)引用為null問(wèn)題),具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • 解決JDBC Connection Reset的問(wèn)題分析

    解決JDBC Connection Reset的問(wèn)題分析

    這篇文章主要介紹了解決JDBC Connection Reset的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • 在Mac OS上安裝Java以及配置環(huán)境變量的基本方法

    在Mac OS上安裝Java以及配置環(huán)境變量的基本方法

    這篇文章主要介紹了在Mac OS上安裝Java以及配置環(huán)境變量的基本方法,包括查看所安裝Java版本的方法,需要的朋友可以參考下
    2015-10-10
  • IDEA中Mybatis的MGB使用逆向工程配置的詳細(xì)教程

    IDEA中Mybatis的MGB使用逆向工程配置的詳細(xì)教程

    這篇文章主要介紹了IDEA中Mybatis的MGB使用逆向工程配置,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-09-09
  • Java設(shè)計(jì)模式之java外觀(guān)模式詳解

    Java設(shè)計(jì)模式之java外觀(guān)模式詳解

    這篇文章主要介紹了Java設(shè)計(jì)模式之外觀(guān)模式(Facade模式)介紹,外觀(guān)模式(Facade)的定義:為子系統(tǒng)中的一組接口提供一個(gè)一致的界面,需要的朋友可以參考下
    2021-09-09

最新評(píng)論

湖南省| 石城县| 京山县| 固安县| 文山县| 阿拉善盟| 罗田县| 瑞丽市| 林芝县| 治多县| 诸城市| 商南县| 岗巴县| 河北省| 柳林县| 徐水县| 常州市| 抚顺市| 墨江| 黑龙江省| 高州市| 武宁县| 介休市| 财经| 高台县| 屏东市| 耿马| 永平县| 原平市| 巴南区| 东平县| 莎车县| 南安市| 桃园市| 南江县| 芮城县| 五大连池市| 泾川县| 眉山市| 华阴市| 内江市|