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

SpringBoot Shiro授權(quán)實(shí)現(xiàn)過程解析

 更新時間:2019年11月12日 10:07:27   作者:濤先森の日常  
這篇文章主要介紹了SpringBoot Shiro授權(quán)實(shí)現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下

這篇文章主要介紹了SpringBoot Shiro授權(quán)實(shí)現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下

使用Shiro過濾器實(shí)現(xiàn)授權(quán)

設(shè)置好授權(quán)攔截跳轉(zhuǎn)的請求地址

/**
   * 創(chuàng)建ShiroFilterFactoryBean
   */
  @Bean
  public ShiroFilterFactoryBean getShiroFilterFactoryBean(@Qualifier("securityManager") DefaultWebSecurityManager securityManager) {
    ShiroFilterFactoryBean shiroFilterFactoryBean=new ShiroFilterFactoryBean();
    //設(shè)置安全管理器
    shiroFilterFactoryBean.setSecurityManager(securityManager);
    
    //添加Shiro內(nèi)置過濾器
    /**
     * Shiro內(nèi)置過濾器,可以實(shí)現(xiàn)權(quán)限相關(guān)的攔截器
     * 常用的過濾器:
     *   anon:無需認(rèn)證(登錄)可以訪問
     *   authc:必須認(rèn)證才可以訪問
     * user:如果使用rememberMe的功能可以直接訪問
     * perms:該資源必須得到資源權(quán)限才可以訪問
     * role:該資源必須得到角色權(quán)限才可以訪問
     */  
    Map<String, String> filterMap= new LinkedHashMap<String,String>();
    
    
    //設(shè)置攔截后跳轉(zhuǎn)的請求路徑
    shiroFilterFactoryBean.setLoginUrl("/user/badRequest");
    //設(shè)置未授權(quán)提示的頁面
    shiroFilterFactoryBean.setUnauthorizedUrl("/user/badRequest");
    shiroFilterFactoryBean.setFilterChainDefinitionMap(filterMap);
    return shiroFilterFactoryBean;
  }

再使用 filterMap 去放對應(yīng)的攔截即可,例如 filterMap.put("/**", "anon")

上面是認(rèn)證的,如果需要授權(quán)的,相應(yīng)的多給一個任意的授權(quán)字符串如 filterMap.put("/user/add", "perms[user:add]")

授權(quán)邏輯編寫的位置

/**
   * 執(zhí)行授權(quán)邏輯
   */
  @Override
  protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection arg0) {
    System.out.println("開始執(zhí)行Shiro的授權(quán)方法...");
    
    //給資源進(jìn)行授權(quán)
    SimpleAuthorizationInfo info= new SimpleAuthorizationInfo();
    
    //添加資源的授權(quán)字符串
    info.addStringPermission("user:add");
    
    return null;
  }

授權(quán)字符串和之前的字符串對應(yīng)

補(bǔ)充

/**
   * 執(zhí)行認(rèn)證邏輯
   */
  @Override
  protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken arg0) throws AuthenticationException {
    System.out.println("開始執(zhí)行Shiro的認(rèn)證方法...");    
    //編寫Shiro判斷邏輯,判斷用戶名和密碼
    //判斷用戶名是否存在
    UsernamePasswordToken token=(UsernamePasswordToken)arg0;
    User user = userMapper.findByUsername(token.getUsername());
    if(user==null)
      return null;
    //判斷密碼是否正確,參數(shù)一為認(rèn)證的實(shí)體
    return new SimpleAuthenticationInfo(user,user.getPassword(),"");
  }

在執(zhí)行認(rèn)證時的SimpleAuthenticationInfo第一個傳參可以用來獲取當(dāng)前用戶

/**
   * 執(zhí)行授權(quán)邏輯
   */
  @Override
  protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection arg0) {
    System.out.println("開始執(zhí)行Shiro的授權(quán)方法...");
    
    //給資源進(jìn)行授權(quán)
    SimpleAuthorizationInfo info= new SimpleAuthorizationInfo();
    
    //添加資源的授權(quán)字符串
    info.addStringPermission("user:register");
    
    //獲取當(dāng)前的登錄用戶
    User user=(User)SecurityUtils.getSubject().getPrincipal();        
    return null;
  }

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Logback如何將日志輸出到Kafka配置示例

    Logback如何將日志輸出到Kafka配置示例

    logback是一個功能強(qiáng)大的Java日志框架,它是log4j的繼任者,提供了豐富的功能和配置選項(xiàng),本文將介紹Logback將日志輸出到Kafka配置示例,感興趣的朋友一起看看吧
    2024-12-12
  • Java異常處理之java.lang.ClassCastException問題

    Java異常處理之java.lang.ClassCastException問題

    這篇文章主要介紹了Java異常處理之java.lang.ClassCastException問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • Java使用@Retryable注解實(shí)現(xiàn)HTTP請求重試

    Java使用@Retryable注解實(shí)現(xiàn)HTTP請求重試

    HTTP調(diào)用是Java應(yīng)用與外部API進(jìn)行交互時重要的訪問方式之一,為了確保在遇到臨時性問題時能自動重試,我們可以設(shè)計(jì)一個靈活的重試機(jī)制,在Java中,我們可以通過注解來實(shí)現(xiàn)這一功能,文將介紹如何使用注解@Retryable來實(shí)現(xiàn)HTTP調(diào)用的重試機(jī)制,需要的朋友可以參考下
    2024-10-10
  • mybatis-plus enum實(shí)現(xiàn)枚舉類型自動轉(zhuǎn)換

    mybatis-plus enum實(shí)現(xiàn)枚舉類型自動轉(zhuǎn)換

    本文主要介紹了mybatis-plus enum實(shí)現(xiàn)枚舉類型自動轉(zhuǎn)換,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-07-07
  • 解決java執(zhí)行cmd命令調(diào)用ffmpeg報(bào)錯Concat error - No such filter ''[0,0]''問題

    解決java執(zhí)行cmd命令調(diào)用ffmpeg報(bào)錯Concat error - No such filter ''[0,0]

    這篇文章主要介紹了java執(zhí)行cmd命令,調(diào)用ffmpeg報(bào)錯Concat error - No such filter '[0,0]'解決方法,本文通過截圖實(shí)例代碼說明給大家介紹的非常詳細(xì),對大家的工作或?qū)W習(xí)有一定的參考借鑒價值,需要的朋友可以參考下
    2020-03-03
  • java+selenium實(shí)現(xiàn)滑塊驗(yàn)證

    java+selenium實(shí)現(xiàn)滑塊驗(yàn)證

    現(xiàn)在越來越多的網(wǎng)站都使用采用滑塊驗(yàn)證來作為驗(yàn)證機(jī)制,用于判斷用戶是否為人類而不是機(jī)器人,本文就將利用java和selenium實(shí)現(xiàn)滑塊驗(yàn)證,希望對大家有所幫助
    2023-12-12
  • Java異常ClassCastException的解決

    Java異常ClassCastException的解決

    這篇文章主要介紹了Java異常ClassCastException的解決,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • Java通過正則表達(dá)式獲取字符串中數(shù)字的方法示例

    Java通過正則表達(dá)式獲取字符串中數(shù)字的方法示例

    最近工作中遇到了一個需求,需要利用java獲取字符串中的數(shù)字,嘗試幾種方法后發(fā)現(xiàn)利用正則表達(dá)式實(shí)現(xiàn)最為方法,下面這篇文章就主要介紹了Java通過正則表達(dá)式獲取字符串中數(shù)字的方法,文中給出了詳細(xì)的示例代碼,需要的朋友可以參考下。
    2017-03-03
  • Java實(shí)戰(zhàn)之網(wǎng)上書店管理系統(tǒng)的實(shí)現(xiàn)

    Java實(shí)戰(zhàn)之網(wǎng)上書店管理系統(tǒng)的實(shí)現(xiàn)

    本文將利用Java語言實(shí)現(xiàn)網(wǎng)上書店管理系統(tǒng)。其功能一般包括:圖書信息管理、用戶信息管理、圖書購買、圖書訂單查看、圖書添加、圖書維護(hù)等等,感興趣的可以了解一下
    2022-06-06
  • 如何動態(tài)修改JavaBean中注解的參數(shù)值

    如何動態(tài)修改JavaBean中注解的參數(shù)值

    這篇文章主要介紹了如何動態(tài)修改JavaBean中注解的參數(shù)值操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02

最新評論

阜平县| 韶山市| 巩义市| 宜良县| 奉新县| 南丰县| 应城市| 冕宁县| 紫云| 阜宁县| 开化县| 常宁市| 云龙县| 黄龙县| 南和县| 克拉玛依市| 岑溪市| 临江市| 宁陵县| 新晃| 吐鲁番市| 千阳县| 白朗县| 广昌县| 兴义市| 阜南县| 东阿县| 赤水市| 南丹县| 汉阴县| 奉节县| 镇宁| 松溪县| 吕梁市| 青州市| 盐津县| 都安| 桑植县| 七台河市| 南昌市| 福鼎市|