日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

想要控制好權限,這八個注解必須知道!

來源: 責編: 時間:2023-08-09 23:03:37 388觀看
導讀在碼猿慢病云管理系統采用的是Spring Cloud 集成Spring Security OAuth2的方式實現認證、鑒權,其中涉及到的一個重要問題則是數據權限的過濾,今天就來介紹一下實現的方案。在之前的文章中曾經介紹過通過自定義的三個注

在碼猿慢病云管理系統采用的是Spring Cloud 集成Spring Security OAuth2的方式實現認證、鑒權,其中涉及到的一個重要問題則是數據權限的過濾,今天就來介紹一下實現的方案。zEu28資訊網——每日最新資訊28at.com

在之前的文章中曾經介紹過通過自定義的三個注解 @RequiresLogin、 @RequiresPermissions 、 @RequiresRoles 實現微服務的鑒權其實就是參考Spring Security 內置的注解實現,有想要了解的請看:3 個注解,優雅的實現微服務鑒權zEu28資訊網——每日最新資訊28at.com

在介紹數據權限之前,先來看下Spring Security 中內置的8個權限注解,只有理解了這8個注解,對于理解碼猿慢病云管理系統中的實現方案就非常easy了。zEu28資訊網——每日最新資訊28at.com

Spring Security 內置的權限注解是將鑒權下放到各個微服務,想要了解在網關處統一鑒權處理的請看之前分享的文章:實戰干貨!Spring Cloud Gateway 整合 OAuth2.0 實現分布式統一認證授權!zEu28資訊網——每日最新資訊28at.com

Spring Security 中的權限注解

Spring Security 中支持多種數據權限注解,若想使用內置的注解,首先需要通過@EnableGlobalMethodSecurity這個注解開啟權限注解的支持,代碼如下:zEu28資訊網——每日最新資訊28at.com

/** * @author 公眾號:碼猿技術專欄 * 自定義資源服務注解 * {@link com.code.ape.codeape.common.security.annotation.EnableCodeapeResourceServer} */@Documented@Inherited@Target({ ElementType.TYPE })@Retention(RetentionPolicy.RUNTIME)@EnableGlobalMethodSecurity(prePostEnabled = true)@Import({ CodeapeResourceServerAutoConfiguration.class, CodeapeResourceServerConfiguration.class })public @interface EnableCodeapeResourceServer {}

在碼猿慢病云管理系統中是將Spring Security集成為一個Spring Boot Starter,因此需要一個直接開啟對于Spring Security的支持,EnableCodeapeResourceServer是自定義的資源服務注解,便于一鍵導入資源服務配置,只要是資源服務,只需要在資源服務配置類上添加這個注解即可。zEu28資訊網——每日最新資訊28at.com

比如設備服務(codeape-device-biz)的啟動類如下:zEu28資訊網——每日最新資訊28at.com

圖片圖片zEu28資訊網——每日最新資訊28at.com

如果是直接集成Spring Security ,那么直接在配置類標注@EnableGlobalMethodSecurity這個注解也是一樣效果,代碼如下:zEu28資訊網——每日最新資訊28at.com

@Configuration@EnableGlobalMethodSecurity(prePostEnabled = true,securedEnabled = true, jsr250Enabled = true)public class SecurityConfig extends WebSecurityConfigurerAdapter {}

@EnableGlobalMethodSecurity注解的三個屬性如下:zEu28資訊網——每日最新資訊28at.com

  • prePostEnabled:設置為true,將會開啟 Spring Security 提供的四個權限注解,@PostAuthorize、@PostFilter、@PreAuthorize 以及 @PreFilter,這四個注解支持權限表達式,支持 SpEL,功能比較豐富。
  • securedEnabled:設置為true,將會開啟 Spring Security 提供的 @Secured 注解,該注解不支持權限表達式。
  • jsr250Enabled:設置為true,將會開啟 JSR-250 提供的注解,主要包括 @DenyAll、@PermitAll 以及 @RolesAllowed 三個注解,這些注解也不支持權限表達式。

以上的8個注解總結如下:zEu28資訊網——每日最新資訊28at.com

  1. @PostAuthorize:在目標方法執行之后進行權限校驗。
  2. @PostFilter:在目標方法執行之后對方法的返回結果進行過濾。
  3. @PreAuthorize:在目標方法執行之前進行權限校驗。
  4. @PreFilter:在目標方法執行之前對方法參數進行過濾。
  5. @Secured:訪問目標方法必須具備相應的角色。
  6. @DenyAll:拒絕所有訪問。
  7. @PermitAll:允許所有訪問。
  8. @RolesAllowed:訪問目標方法必須具備相應的角色。

其實在日常開發中使用前四個注解已經完全夠用,且支持靈活的SPEL權限表達式,方便定制。因此只需要設置prePostEnabled = truezEu28資訊網——每日最新資訊28at.com

權限注解使用

接下來就來簡單介紹一下這8個權限注解的使用。zEu28資訊網——每日最新資訊28at.com

1. @PreAuthorize

@PreAuthorize這個注解在方法執行之前進行安全校驗,支持SPEL,比如在接口使用代碼如下:zEu28資訊網——每日最新資訊28at.com

@RestController@RequestMappingpublic class HelloService {    @PreAuthorize("hasRole('IN_HOS_NURSE')")    @GetMapping    public String hello() {        return "hello";    }}

@PreAuthorize("hasRole('IN_HOS_NURSE')")代碼含義則是只有擁有住院護士的角色的用戶才能訪問這個接口。這里用到了hasRole這個權限表達式,表示擁有某個角色zEu28資訊網——每日最新資訊28at.com

2. @PreFilter

@PreFilter這個注解主要是對參數進行過濾,其中兩個屬性如下:zEu28資訊網——每日最新資訊28at.com

  • value :SPEL表達式校驗
  • filterTarget:多個參數的情況下,指定對某個參數校驗

使用如下:zEu28資訊網——每日最新資訊28at.com

@RestController@RequestMappingpublic class HelloService {    @PreFilter(value = "obj.id!=1",filterTarget = "users")    @GetMapping    public String hello(List<Obj> obj,Integer a) {        return "hello";    }}

3. @PostAuthorize

@PostAuthorize是在方法執行之后進行數據校驗,平常所有的數據校驗一般是在方法執行之前,所以一般結合@PreAuthorize使用。zEu28資訊網——每日最新資訊28at.com

PostAuthorize中內置了一個returnObject返回值,對方法的返回值校驗,使用如下:zEu28資訊網——每日最新資訊28at.com

@RestController@RequestMappingpublic class HelloService {    @PostAuthorize(value = "returnObject.id==1")    @GetMapping    public Obj hello(List<Obj> obj,Integer a) {        return "hello";    }}

這個接口的返回值的id必須等于1才會通過,否則將會拋出異常。zEu28資訊網——每日最新資訊28at.com

4. @PostFilter

@PostFilter 注解是在目標方法執行之后,對目標方法的返回結果進行過濾,該注解中包含了一個內置對象 filterObject,表示目標方法返回的集合/數組中的具體元素:zEu28資訊網——每日最新資訊28at.com

@RestController@RequestMappingpublic class HelloService {    @PostFilter(value = "filterObject.id==1")    @GetMapping    public Obj hello(List<Obj> obj,Integer a) {        return "hello";    }}

5. @Secured

@Secured 注解也是 Spring Security 提供的權限注解,不同于前面四個注解,該注解不支持權限表達式,只能做一些簡單的權限描述。zEu28資訊網——每日最新資訊28at.com

使用如下:zEu28資訊網——每日最新資訊28at.com

@RestController@RequestMappingpublic class HelloService {    @Secured({"ROLE_IN_HOS_NURSE","ROLE_IN_HOS_DOC"})    @GetMapping    public Obj hello(List<Obj> obj,Integer a) {        return "hello";    }}

這段代碼表示只有當前用戶擁有住院護士、住院醫生的權限才能訪問這個接口。zEu28資訊網——每日最新資訊28at.com

@Secured能夠做的,@PreAuthorize也都能做,且給的更多!zEu28資訊網——每日最新資訊28at.com

6. @DenyAll

@DenyAll 是 JSR-250 提供的方法注解,顧名思義,拒絕所有請求。zEu28資訊網——每日最新資訊28at.com

@RestController@RequestMappingpublic class HelloService {    @DenyAll    @GetMapping    public String hello() {        return "hello";    }}

7. @PermitAll

@PermitAll 也是 JSR-250 提供的方法注解,顧名思義,允許所有訪問!zEu28資訊網——每日最新資訊28at.com

@RestController@RequestMappingpublic class HelloService {    @PermitAll    @GetMapping    public String hello() {        return "hello";    }}

8. @RolesAllowed

@RolesAllowed 也是 JSR-250 提供的注解,可以添加在方法上或者類上,當添加在類上時,表示該注解對類中的所有方法生效;如果類上和方法上都有該注解,并且起沖突,則以方法上的注解為準。zEu28資訊網——每日最新資訊28at.com

@RestController@RequestMappingpublic class HelloService {    @RolesAllowed({"IN_HOS_NURSE","IN_HOS_DOC"})    @GetMapping    public Obj hello(List<Obj> obj,Integer a) {        return "hello";    }}

這段代碼表示只有當前用戶擁有住院護士、住院醫生的權限才能訪問這個接口。zEu28資訊網——每日最新資訊28at.com

根據上述的介紹,大致理解了這8個注解,實際項目中建議使用@PostAuthorize、@PostFilter、@PreAuthorize 以及 @PreFilter這四個注解,完全夠用了!zEu28資訊網——每日最新資訊28at.com

慢病云管理系統的實踐

在碼猿慢病云管理系統中使用的權限注解是@PreAuthorize,在接口執行之前對數據權限進行校驗。zEu28資訊網——每日最新資訊28at.com

比如住院服務codeape-inhos-biz中的分頁查詢住院患者接口如下:zEu28資訊網——每日最新資訊28at.com

圖片圖片zEu28資訊網——每日最新資訊28at.com

這里的@PreAuthorize("@pms.hasPermission('inhos_patinfohot_get')" )則是對用戶的權限進行攔截校驗,只有擁有inhos_patinfohot_get權限的用戶才能訪問這個接口。zEu28資訊網——每日最新資訊28at.com

而這里是直接通過SPEL表達式調用IOC容器中的方法進行攔截校驗,代碼如下:zEu28資訊網——每日最新資訊28at.com

com.code.ape.codeape.common.security.component.PermissionService#hasPermissionzEu28資訊網——每日最新資訊28at.com

圖片圖片zEu28資訊網——每日最新資訊28at.com

邏輯很簡單,從SecurityContext中獲取用戶的權限和指定的權限進行比較,校驗通過則返回true。zEu28資訊網——每日最新資訊28at.com

總結

本篇文章介紹了Spring Security 中內置的8個權限注解以及碼猿慢病云管理系統中的實踐,這個權限注解的使用是必須將權限下放到微服務鑒權才能用到,如果你的系統是在網關處統一鑒權則用不到。zEu28資訊網——每日最新資訊28at.com

碼猿慢病云管理系統已經在星球中陸續更新,目前更新內容如下:zEu28資訊網——每日最新資訊28at.com

前言     01 項目架構+業務介紹     02 三方組件介紹     03 服務端項目部署     04 前端項目部署     05 多租戶架構設計     06 醫療系統中的權限如何設計?     07 項目搭建     08 關掉驗證碼登錄     09 開發平臺自動生成業務代碼認證鑒權     01 認證登錄生成token     02 token檢驗、鑒權     03 token有效期設置     04 刷新token     05 檢查token     06 服務中如何獲取當前登錄用戶信息?     07 接口對外暴露     08 接口只允許內部調用怎么處理?     09 如何實現token中繼?     10 當前登錄用戶身份信息如何異步傳遞?     11 科室權限如何定一個注解自動注入?     12 一個注解防止接口重復提交     13 8個權限注解玩轉鑒權業務     01 科室管理     02 醫院管理     03 角色管理     04 菜單+權限管理

zEu28資訊網——每日最新資訊28at.com

本文鏈接:http://m.www897cc.com/showinfo-26-5188-0.html想要控制好權限,這八個注解必須知道!

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: Golang 中的 IO 包詳解:指定讀寫對象和偏移量接口

下一篇: 為什么這個外國人都喜歡用的軟件,中國卻做不了?

標簽:
  • 熱門焦點
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
久久狠狠亚洲综合| 国产一区二区三区免费观看| 欧美成年人视频| 欧美成人一品| 欧美日韩一级黄| 国产欧美不卡| 亚洲国产毛片完整版| 亚洲国产一区二区三区青草影视 | 国产一区二区三区无遮挡| 黄色一区二区在线| 亚洲人久久久| 亚洲尤物视频网| 久久午夜激情| 欧美涩涩网站| 韩国v欧美v日本v亚洲v| 亚洲精品日韩精品| 性8sex亚洲区入口| 欧美成人中文字幕| 国产精品久久久一区二区三区| 国际精品欧美精品| 夜夜嗨一区二区| 久久久激情视频| 欧美日韩99| 好看的亚洲午夜视频在线| 亚洲精品欧美日韩专区| 欧美一级欧美一级在线播放| 欧美高清影院| 国产性做久久久久久| 日韩亚洲欧美综合| 久久久午夜电影| 国产精品久久久久毛片大屁完整版| 原创国产精品91| 亚洲女人天堂成人av在线| 欧美成va人片在线观看| 国产日韩欧美另类| 一区二区三区高清在线 | 国产精品中文字幕欧美| 亚洲精品影视| 久久深夜福利免费观看| 国产精品三区www17con| 亚洲精品乱码| 久久免费精品视频| 国产精品女人网站| 亚洲裸体在线观看| 麻豆精品网站| 国产一区日韩二区欧美三区| 亚洲天堂网站在线观看视频| 欧美成人午夜77777| 好吊妞**欧美| 欧美亚洲视频在线观看| 欧美揉bbbbb揉bbbbb| 亚洲精品1区2区| 久久久久网址| 国产欧美日韩一区二区三区在线| 一区二区三区四区国产精品| 欧美顶级少妇做爰| 伊人春色精品| 久久国产免费| 国产欧美日韩精品a在线观看| 在线一区观看| 欧美日韩视频在线第一区| 亚洲欧洲一区二区在线播放| 久久米奇亚洲| 国模私拍一区二区三区| 欧美在线关看| 国产麻豆一精品一av一免费| 亚洲视频在线播放| 欧美日韩18| 亚洲美女黄网| 欧美精品一区二区三区很污很色的| 在线成人av| 久久亚洲免费| 在线精品国产欧美| 老司机午夜精品| 在线成人欧美| 久久综合伊人77777| 樱桃成人精品视频在线播放| 久久久欧美一区二区| 国产综合久久久久影院| 久久成人免费电影| 国产情人综合久久777777| 欧美一区1区三区3区公司| 国产区精品在线观看| 欧美一区二区高清| 国产亚洲午夜| 久久精品午夜| 亚洲成色777777女色窝| 美女久久一区| 亚洲日本中文| 欧美日韩极品在线观看一区| 99在线精品视频| 欧美婷婷六月丁香综合色| 亚洲一区二区三区精品视频| 国产精品久久久久久亚洲调教| 午夜精品免费| 狠狠色伊人亚洲综合网站色| 玖玖玖国产精品| 亚洲精品社区| 欧美视频在线免费| 亚洲欧美久久久| 国产一级久久| 久久精品五月婷婷| 亚洲日本成人女熟在线观看| 欧美日韩国产精品成人| 亚洲制服av| 国内伊人久久久久久网站视频| 巨乳诱惑日韩免费av| 一本在线高清不卡dvd| 国产精品毛片a∨一区二区三区|国| 欧美一级二级三级蜜桃| 在线观看日韩一区| 欧美精品日韩综合在线| 亚洲伊人伊色伊影伊综合网| 国产一区再线| 欧美国产日韩二区| 亚洲在线视频免费观看| 国内外成人在线视频| 欧美国产视频一区二区| 这里只有精品电影| 国产日韩一区二区三区在线播放 | 亚洲大片精品永久免费| 欧美另类极品videosbest最新版本| 亚洲视频在线观看网站| 国产午夜精品久久久久久久| 欧美aa在线视频| 亚洲在线视频一区| 在线播放中文一区| 欧美三级乱码| 久久精品视频在线播放| 日韩网站在线观看| 国产欧美一区二区精品婷婷| 裸体女人亚洲精品一区| 亚洲午夜精品久久| 一区免费观看视频| 国产精品v片在线观看不卡| 久久精品欧洲| 一区二区欧美日韩| 韩日精品视频一区| 欧美视频在线观看免费| 久久在线视频在线| 亚洲一区二区三区在线播放| 国户精品久久久久久久久久久不卡| 欧美精品在线网站| 久久精品日产第一区二区| 一本久久a久久精品亚洲| 狠狠噜噜久久| 国产精品久久久久aaaa樱花| 老牛国产精品一区的观看方式| 亚洲一二三级电影| 亚洲激情在线观看视频免费| 国产日韩欧美不卡在线| 欧美日韩精品一区二区三区| 久久久久久久91| 亚洲影视九九影院在线观看| 亚洲国产精品久久精品怡红院 | 亚洲成人中文| 国产啪精品视频| 国产精品theporn88| 欧美成人中文字幕| 久久精品人人做人人综合| 亚洲欧美国产日韩中文字幕| 亚洲开发第一视频在线播放| 精品动漫3d一区二区三区免费版| 国产精品久久久久久久久婷婷| 欧美大片免费观看在线观看网站推荐| 欧美一级播放| 亚洲视频一区二区在线观看| 亚洲欧洲在线免费| 一区在线电影| 国产日韩在线看| 国产精品区免费视频| 欧美日韩中文另类| 欧美激情偷拍| 你懂的国产精品永久在线| 久久精品成人| 性做久久久久久久久| 亚洲一级片在线观看| 99国内精品久久久久久久软件| 亚洲国产91色在线| 伊人精品成人久久综合软件| 精品动漫3d一区二区三区| 欧美久久综合| 久久免费偷拍视频| 亚洲欧美日韩国产综合精品二区| 日韩视频一区| 亚洲国产精品一区制服丝袜| 国产一区二区丝袜高跟鞋图片| 国产精品免费福利| 欧美午夜免费影院| 欧美日韩免费一区| 欧美人成免费网站| 欧美激情成人在线视频| 快she精品国产999| 久久久久免费观看| 久久精品成人| 久久久99精品免费观看不卡| 亚洲欧美www| 亚洲免费在线精品一区| 中文久久精品| 亚洲午夜久久久久久尤物| 一本综合精品| 中文精品视频一区二区在线观看| 一区二区三区久久网| 一本久久综合亚洲鲁鲁|