国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

還在親手寫Filter進行權限校驗?嘗試一下Shiro吧

開發 架構
在實踐中,發現很多朋友雖然在使用Shiro,但貌似對其并不了解,甚至有的項目還在使用filter來實現權限管理,而網絡上相關教程又比較古老。因此,決定為大家更新這么一個關于Shiro的系列教程,最后會整理成冊,分享給大家。

[[377360]]

 本文轉載自微信公眾號「程序新視界」,作者丑胖俠二師兄。轉載本文請聯系程序新視界公眾號。  

在實踐中,發現很多朋友雖然在使用Shiro,但貌似對其并不了解,甚至有的項目還在使用filter來實現權限管理,而網絡上相關教程又比較古老。因此,決定為大家更新這么一個關于Shiro的系列教程,最后會整理成冊,分享給大家。

如果你也想深入學習一下Shiro框架,那么關注一下公眾號“程序新視界”,可及時獲取最新的文章,等本系列更新完畢會也會第一時間整理成電子版文檔分享給大家。第一篇,給大家科普一些基礎概念,下面開始正文。

前言

權限管理是每個系統不可缺少的,它隸屬于系統安全的范疇,實現對用戶訪問系統的控制,按照指定的安全策略控制用戶對資源的訪問。

權限管理通常包括用戶身份認證和授權兩部分,簡稱認證授權。對于需要訪問控制的資源,需先進行用戶身份認證,認證通過后用戶具有該資源的訪問權限便可進行訪問。

針對權限管理,在Java體系中,常見的權限框架有Shiro和Spring Security,當然在一些簡單或古老的系統中可能還在用手寫的filter來進行權限的管理和控制。本文先從Shiro的功能、組件、架構等方面來帶大家了解一下Shiro框架。

Shiro簡介

Apache Shiro是一個強大且易用的Java安全框架,執行身份驗證、授權、密碼和會話管理。與之相對應的便是Spring Security,但在大多數項目中開發人員更愿意使用Shiro來管理權限。

主要原因是使用起來比較簡單,而Spring Security相對來說更重量級一些,學習曲線比較陡峭,而實際環境中也并不需要Spring Security那么多功能。所以,一般情況下,使用Shiro便足夠了。

Shiro可以快速、輕松的運用于任何應用程序中,從最小的移動應用程序到最大的網絡和企業應用程序。

Shiro能做什么

Shiro提供了以下功能:認證(Authentication)、授權(Authorization)、加密(Cryptography)、Session管理(Session Management)、Web集成(Web Support)、緩存(Caching)等。可用于保護任何應用程序:從命令行應用程序、移動應用程序到最大的Web和企業應用程序。

關于Shiro的核心功能,官方提供了下圖:

使用Shiro我們可以實現以下功能:

  • 用戶認證;
  • 用戶訪問控制:判斷用戶是否擁有特定的角色;判斷用戶是否可執行某個操作;
  • 在任何環境下使用Session API,即使在Web或EJB容器之外的應用;
  • 可在認證、訪問控制和會話期間,對事件做出響應;
  • 匯總一個或多個用戶安全數據的數據源,并將其全部顯示為單個復合用戶“視圖”;
  • 支持單點登錄(SSO)功能;
  • 支持登錄時的“記住”功能;
  • 其他應用程序;

Shiro特點

Shiro的目標是:在各類應用(從命令行到大型企業應用)中,做到不依賴其他三方框架、容器或應用程序本身的依賴,可以在任何環境中直接使用。同時它又具有以下特點:

  • 易于理解的Java Security API;
  • 簡單的身份認證(登錄),支持多種數據源(LDAP,JDBC,Kerberos,ActiveDirectory 等);
  • 對角色的簡單的簽權(訪問控制),支持細粒度的簽權;
  • 支持一級緩存,以提升應用程序的性能;
  • 內置的基于POJO企業會話管理,適用于Web以及非Web的環境;
  • 異構客戶端會話訪問;
  • 非常簡單的加密 API;
  • 不跟任何的框架或者容器捆綁,可以獨立運行;

Shiro各模塊功能

結合下圖,我們來細化一下Shiro各個模塊對應的功能:

Authentication:身份認證/登錄,驗證用戶是不是擁有相應的身份;

Authorization:授權,即權限驗證。驗證某個用戶是否有操作某個功能的權限。如:驗證用戶是否擁有某個角色、是否有操作某個資源的權限;

Session Management:Session管理,存儲用戶登錄信息于會話當中,支持Web環境和非Web環境;

Cryptography:加密數據,并保持易用性,比如密碼加密后存儲到數據庫;

Web Support:Web支持,可以方便的集成到Web環境;

Caching:緩存,比如用戶登錄后,對用戶信息、角色/權限進行緩存;

Concurrency:Shiro支持多線程場景下的并發驗證,即如在一個線程中開啟另一個線程,能把權限自動傳播過去;

Testing:提供測試支持;

Run As:允許一個用戶假裝為另一個用戶(如果他們允許)進行訪問;

Remember Me:記住我,登錄之后,下次可直接進入系統。

看了上面的組件是不是突然覺得Shiro在實際應用中被小看了?雖然Shiro為我們提供了這么多功能,但它并不會幫我們實現具體的用戶、權限等體系,關于用戶、角色、權限等需要自行設計,然后在Shiro中進行處理即可。

核心組件

Shiro包括三大核心組件:Subject,SecurityManager和Realms。這三個組件的關系如下圖:

Subject:主體,即“當前操作用戶”。在Shiro中Subject并不僅僅指人,是一個抽象概念,也可以是第三方進程、后臺帳戶(Daemon Account)或其他類似事物(如爬蟲、機器人等)。也就是說它僅僅意味著“當前跟軟件交互的東西”。所有Subject都綁定到SecurityManager上,SecurityManager才是實際的執行者。

SecurityManager:它是Shiro框架的核心,典型的Facade模式,Shiro通過SecurityManager來管理內部組件實例(包括所有的Subject),并通過它來提供安全管理的各種服務。類似SpringMVC中的DispatcherServlet的作用。

Realm:域,充當了Shiro與應用安全數據間的“橋梁”或者“連接器”。也就是說,當對用戶執行認證(登錄)和授權(訪問控制)驗證時,Shiro會從應用配置的Realm中查找用戶及其權限信息。從這個意義上講,Realm本質上是一個安全相關的DAO:它封裝了數據源的連接細節,在需要時將相關數據提供給Shiro。當配置Shiro時,至少指定一個Realm,用于認證和(或)授權。

Shiro內置了可以連接大量安全數據源(又名目錄)的Realm,如LDAP、關系數據庫(JDBC)、類似INI的文本配置資源以及屬性文件等。如果默認的Realm不能滿足需求,還可以自定義Realm實現。

Shiro架構概覽

分析了上述組件,我們梳理一下Shiro使用的簡單場景:應用程序通過Subject來進行認證和授權,而Subject是委托給SecurityManager管理的。SecurityManager進行認證和授權又需要Authenticator和Realm的支持,因此需將Realm注入給SecurityManager。

那么,Shiro內部的架構又是如何呢?

上圖中,Subject、SecurityManager、Realm我們在前面已經講到過了,這里再看看其他模塊:

Authenticator:認證器,負責Subject的認證,支持自定義實現;需要認證策略(Authentication Strategy),即認證通過的條件。

Authrizer:授權器,或者訪問控制器,用來決定主體是否有權限進行相應的操作。

SessionManager:SessionManager用于管理Session的生命周期。Shiro可用在Web環境和非Web環境,所以Shiro就抽象出一個Session來管理主體與應用之間交互的數據,這樣就可以將不同應用的Session進行集中管理,從而實現分布式會話。

SessionDAO:如果想把Session存儲到數據庫或Memcached當中,則可實現對應的SessionDAO來實現會話的CRUD。SessionDAO中可以使用Cache進行緩存,來提高性能;

CacheManager:緩存控制器,用來管理用戶、角色、權限等緩存。

Cryptography:密碼模塊,提供了常見的加解密組件。

了解了上述組件的功能,再回想一下在實踐中的應用,是不是有點豁然開朗了?

小結

看到很多朋友在使用shiro時往往是在網上找到一段代碼,然后進行簡單的修改便運用起來了,而各個組件之間什么關系,實現這個功能的原理是什么等信息卻沒有進行深入探究。這樣即便實踐了很多項目,依舊無法提升自身的技能。本篇文章從shiro的功能、架構、組件等方面進行講解,經過本篇文章的學習,想必大家已經掌握了使用Shiro的基本原理和概念,這也是為后續深入學習和實踐做好準備了。

 

責任編輯:武曉燕 來源: 程序新視界
相關推薦

2022-08-08 10:09:08

Vitest單元測試

2020-10-15 11:18:13

Linux內核虛擬機

2018-02-08 10:52:13

Kotlin語言代碼

2010-12-06 09:10:02

LightSwitch

2023-02-08 09:02:05

VS Code摸魚神器

2022-06-29 10:04:01

PiniaVuex

2022-03-02 10:53:22

Postman工具開發

2022-12-03 18:24:13

數據能力場景

2013-11-20 13:41:32

IE微軟解決方法

2021-04-13 07:29:13

Swagger3接口Postman

2020-07-02 09:46:05

AI

2021-03-18 11:41:04

影子IT影子IoT物聯網安全

2021-11-09 08:57:13

元宇宙VR平行時空

2024-01-10 08:08:25

Python空值校驗開發

2009-06-15 11:22:06

2024-01-31 08:23:54

2024-04-16 13:34:26

JSONMsgpack存儲

2023-06-05 14:14:21

騰訊索引面試

2025-10-28 01:45:00

setTimeouAPI日志

2020-11-12 15:38:48

機器人人工智能系統
點贊
收藏

51CTO技術棧公眾號

国产精品一区二区久久久久| 在线不卡一区二区| 中文字幕无线精品亚洲乱码一区| 国产原创精品在线| 成人激情文学综合网| 欧美在线观看视频| 国产福利视频在线| 国产综合色产在线精品| 午夜精品福利在线观看| www视频在线观看免费| 亚洲精品久久7777| jlzzjlzz欧美大全| 国产日韩欧美不卡在线| 蜜桃麻豆91| 欧美一二区在线观看| 色一情一乱一区二区| www.com.cn成人| 亚洲午夜未删减在线观看 | 成年人免费看的视频| 免费xxxx性欧美18vr| 人体精品一二三区| 国产福利一区二区精品秒拍| 国产视频丨精品|在线观看| 欧产日产国产精品视频| 亚洲片av在线| 91福利国产在线观看菠萝蜜| 专区另类欧美日韩| 麻豆av免费在线| 中文字幕精品在线不卡| 一区二区电影网| 欧美日韩免费区域视频在线观看| 成人网18免费看| 欧美日韩水蜜桃| 亚洲欧美怡红院| 成人在线免费观看av| 紧缚奴在线一区二区三区| 激情欧美一区二区三区中文字幕| 麻豆一区二区99久久久久| 亚洲精品欧美日韩专区| 欧美在线免费| 欧美精品一区二区三区四区五区| 亚洲啪啪91| 亚洲欧美国产精品桃花| 嫩草成人www欧美| 日韩最新中文字幕| 国产成人av在线影院| 韩国一区二区av| 国产片一区二区三区| 久久久精品三级| 一级中文字幕一区二区| 日韩123区| 久久精品成人欧美大片古装| 亚洲人亚洲人色久| 古典武侠综合av第一页| 亚洲综合三区| 色诱视频在线观看| 欧美日韩国产区一| 国产精品久久亚洲不卡| 亚洲一区二区三区四区在线播放| 成人av片在线观看| 看电影就来5566av视频在线播放| 欧美日韩一二三区| www视频在线观看| 国产精品精品视频| 狠狠色丁香婷综合久久| 可以免费看污视频的网站| 色婷婷激情综合| 欧美电影三区| 男人天堂1024| 日韩精品中文在线观看| 欧美成人milf| 成熟丰满熟妇高潮xxxxx视频| 五月激情综合网| av在线播放一区| 99视频精品全部免费看| 色哟哟精品一区| 999久久久国产精品| 黄色在线视频网| 日韩电影第一页| 精品一区二区在线看| 国模雨婷捆绑高清在线| 国产自产精品| 日韩少妇与小伙激情| 91视频免费看| 欧美日韩福利| sm性调教片在线观看| 日韩最新中文字幕| 欧美大黄免费观看| 久久国产日韩| 在线日本视频| 91视频免费进入| 欧美丝袜美女中出在线| 色综合久久网| 超碰在线最新| 一区二区三区四区久久| 欧美成人video| 激情深爱一区二区| 日韩网站中文字幕| 黄色高清无遮挡| 日韩中文字幕在线免费观看| 中文av一区二区| 免费视频国产一区| 成人三级网址| 成人精品视频在线播放| 一区二区在线视频播放| 国产日产精品1区| 免费精品国产| 毛片网站在线免费观看| 国内自拍中文字幕| 尤物tv国产一区| 亚洲尤物视频在线| 四季av在线一区二区三区| 日韩另类在线| 69免费视频| 国产综合福利在线| 亚洲网址你懂得| 欧美少妇xxx| 国产精品18久久久久久久网站| 色狮一区二区三区四区视频| 高清一区二区| 在线电影av| 男女啪啪的视频| 国产这里只有精品| 精品欧美激情精品一区| 美女网站在线免费欧美精品| 女同久久另类99精品国产| 丁香花在线观看完整版电影| 五月婷婷之综合激情| 日本高清视频一区二区三区| 国产精品黄色av| 亚洲精品一区二区精华| 婷婷综合五月天| 91麻豆精品一区二区三区| 欧美亚洲一区二区三区| 国内精品伊人久久久| 成人豆花视频| 色是在线视频| 麻豆视频网站在线观看| 亚洲一区在线不卡| 欧美成人免费在线观看视频| 欧美国产二区| 精品久久久久久综合日本| 久久久久久久久久久亚洲| 亚洲国产日韩欧美在线99| 欧美精品久久久久久久多人混战| 亚洲三级免费电影| 成人av网站在线| 久久久久久久高潮| 一区二区三区网站| 久久综合电影| 亚洲国产二区| 亚洲国产三级| 麻豆91精品91久久久的内涵| 日韩影院免费视频| 久久久久久黄色| 欧美偷拍一区二区| 夜夜嗨av色一区二区不卡| 欧美日韩成人精品| 国产视频不卡| 91大神影片| 欧美大电影免费观看| 欧美电影免费| 91一区在线观看| 日韩精品乱码免费| 国产videos久久| 成人av在线影院| 97久久人人超碰| jlzzjlzz亚洲日本少妇| 亚洲三级在线免费观看| 欧美极品少妇xxxxⅹ喷水| 在线观看日韩片| 影视一区二区三区| 日韩二区三区在线观看| 欧美一区二区在线看| 日韩av高清在线播放| 激情网站在线| 国产iv一区二区三区| 精品视频久久久久久久| 亚洲一区免费看| 精品日韩视频| 久久久久久亚洲综合| 久久av在线播放| www.999av| 成人国产精品一级毛片视频| 亚洲va在线va天堂| 国产精品久久久久久亚洲调教| jizzjizzjizz亚洲| 久久99国内| 亚洲欧美在线视频观看| 国产精品欧美日韩久久| 九色视频网站在线观看| 国产婷婷精品| 亚洲激情在线观看| 热久久精品国产| 杨幂一区二区三区免费看视频| 亚洲香肠在线观看| 亚洲欧洲国产日韩精品| 欧美男女视频| 亚洲同性gay激情无套| 国产精品日韩高清|