日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【转】ABP源码分析四十二:ZERO的身份认证

發布時間:2023/12/10 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【转】ABP源码分析四十二:ZERO的身份认证 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

ABP Zero模塊通過自定義實現Asp.Net Identity完成身份認證功能, 對Asp.Net Identity做了較大幅度的擴展。同時重寫了ABP核心模塊中的permission功能,以實現授權。注意:ABP僅僅使用了Asp.Net Identity的身份認證功能,但沒有使用Asp.Net Identity中的基于role和Claim的授權。

?

ABP Zero 中擴展的Asp.Net Identity實體類: AbpUser, AbpRole。

AbpUser: 代表user的Entity。其實現了Asp.Net Identity的IUser接口。

?

AbpRole: 代表role的Entity。其實現了Asp.Net Identity的IRole接口。一個role代表一組權限。ABP建議檢查user的permission而非role以判斷user是否可以執行某個操作。

?


ABP Zero 中擴展Asp.Net Identity重管理實體的類: AbpUserStore, AbpUserManager,AbpRoleStore,AbpRoleManager。

?

AbpUserStore:主要實現了ASP.NET Identity Framework中與user操作相關的接口:IUserPasswordStore<TUser, long>,IUserEmailStore<TUser, long>,IUserLoginStore<TUser, long>,IUserRoleStore<TUser, long>,IQueryableUserStore<TUser, long>。

同時也實現了IUserPermissionStore<TTenant, TUser>接口。該類通過IRepository<TUser, long>,IRepository<UserLogin, long>,IRepository<UserRole, long>,IRepository<TRole>,IRepository<UserPermissionSetting, long>實例完成User實體的CRUD操作以及與User關聯關系的CRUD操作。

?

?

AbpUserManager:繼承擴展了ASP.NET Identity Framework中UserManager<TUser, long>類。實現了與User相關的領域服務。?

?

AbpRoleStore:其實現了Asp.Net Identity的IQueryableRoleStore接口。 通過IRepository<TRole>,IRepository<UserRole, long>和IRepository<RolePermissionSetting, long>實例完成Role及與role相關的permission/user實體的CRUD操作。

?

AbpRoleManager<TTenant, TRole, TUser>:繼承自Asp.Net Identity的RoleManager<TRole, int>類。這是一個抽象類,實際項目需要指定具體的TTenant, TRole, TUser類型來擴展這個抽象類。該抽象類實現了與Role相關的領域邏輯。

?


其它類

?

UserRole:實現了CreationAuditedEntity<long>的實體類。描述User 和 Role的關系。

?

PermissionSetting:代表user/role 和?permission的關系實體類

?

OrganizationUnit:實現了FullAuditedEntity<long>的實體類,用于表示Organization的實體

?

UserOrganizationUnit:實現了 CreationAuditedEntity<long>的實體類。表示user 和 Organization的關聯關系。

?

UserLogin:實體類用于保存通過外部授權服務授權的用戶的登入信息。

?

RolePermissionCacheItem:這個類實例被用于緩存,其HashSet<string>類型的GrantedPermissions和ProhibitedPermissions對象用于保存role的權限

?

UserPermissionCacheItem:這個類實例被用于緩存,其HashSet<string>類型的GrantedPermissions和ProhibitedPermissions對象用于保存user的權限

?

PermissionEqualityComparer?: 實現了IEqualityComparer<Permission>接口中的Equal和GetHashCode方法,用于比較兩個permission.

AbpRolePermissionCacheItemInvalidator:用于定義響應RolePermissionSetting和AbpRoleBase實體改變事件的處理函數。實際完成的工作就是將相應的緩存對象從緩存中刪除。

?

AbpUserPermissionCacheItemInvalidator:用于定義響應UserPermissionSetting,UserRole和AbpUser實體改變事件的處理函數。實際完成的工作就是將相應的緩存對象從緩存中刪除。

DefaultExternalAuthenticationSource<TTenant, TUser>/IExternalAuthenticationSource<TTenant, TUser>:通過外部身份認證源(比如Facebook)的認證信息創建User.

PermissionChecker:繼承自IPermissionChecker,檢查user是否被授予了某個權限。

?

?

IMayHaveOrganizationUnit:如果entity可能和Organization有關聯,就可以考慮實現該接口。

IMustHaveOrganizationUnit:如果entity一定和Organization有關聯,就可以考慮實現該接口。

?

IOrganizationUnitSettings:定義了一項和OrganizationUnit相關的設置:MaxUserMembershipCount,以及獲取和修改MaxUserMembershipCount的方法。

OrganizationUnitSettings:通過settingManager實現了IOrganizationUnitSettings定義的屬性和方法

?

OrganizationUnitManager:實現與OrganizationUnit相關的領域邏輯。使用IRepository<OrganizationUnit, long>實例完成OrganizationUnit實體的CRUD操作。

?

IdentityFrameworkClaimsAbpSession?: 繼承自ClaimsAbpSession。通過 ASP.NET Identity framework接口獲取當前用戶的userID

?

IdentityResultExtensions:為ASP.NET Identity 的IdentityResult類型添加了如下的擴展方法。這些方法主要用于本地化error message.

?

IdentityResultExtensions定義了一個用于map消息和本地化資源文件中key的字典對象,這個字典對象幫助獲取消息的本地化后的消息。

?

返回ABP源碼分析系列文章目錄

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的【转】ABP源码分析四十二:ZERO的身份认证的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。