diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/zh-Hans.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/zh-Hans.json index c7ccd1e1e2..2ea126df0f 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/zh-Hans.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/zh-Hans.json @@ -140,8 +140,8 @@ "DomainDrivenDesign": "领域驱动设计", "CrossCuttingConcerns": "横切关注点", "AbpCommunity": "ABP 社区", - "Footer_GithubStarCount": "{0} 在 GitHub 上加星", - "Footer_NugetDownloadCount": "{0} 在 NuGet 上下载", + "Footer_GithubStarCount": "{0} GitHub Stars", + "Footer_NugetDownloadCount": "{0} NuGet 下载量", "AbpDescription": "ABP 是一个开源应用程序框架,专注于基于 AspNet Core 的 Web 应用程序开发。 Don't repeat yourself,专注于自己的业务代码。", "Layout_AbpFramework_MetaTitle": "ABP 框架 - 开源 Web 应用程序框架", "CommunityTalks_CountdownDays": "天", diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/zh-Hans.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/zh-Hans.json index 8a32760beb..924306634e 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/zh-Hans.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/zh-Hans.json @@ -137,6 +137,7 @@ "Success": "成功", "WeWillReplyYou": "你的消息已经发送! 我们会在短时间内给你答复.", "GoHome": "回到主页面", + "Home": "主页", "CreateLiveDemo": "创建在线演示", "RegisterToTheNewsletter": "注册到时事简报以获取有关ABP.IO的消息,比如新发布的内容.", "EnterYourEmailOrLogin": "输入你的e-mail地址来创建你的演示或者使用你的已有账号登录.", @@ -324,7 +325,7 @@ "ImplementingDDDBuildingBlocks": "实现 DDD 构建块", "DomainVsApplicationLogic": "领域逻辑与应用逻辑", "SamplesAndDiscussions": "示例和讨论", - "Free": "自由", + "Free": "免费", "Download": "下载", "DDDEBook": "DDD电子书", "ImplementingDDD": "实现领域驱动设计", @@ -392,8 +393,8 @@ "CreateNewOrganization": "建立新的组织", "RenewLicenseEarly": "如果我提前更新我的许可证,我会得到一整年吗?", "RenewLicenseEarylExplanation": "当您在许可证到期日期之前续订许可证时,您的许可证到期日期仍将增加 1 年。 例如,如果您的许可在 {0}-06-06 到期,而您在 {0}-01-01 续订,那么您的新许可到期日期仍将是 {1}-06-06。", - "OpenSourceWebApplication": "开源网络应用程序", - "CompleteWebDevelopment": "一个完整的网络开发", + "OpenSourceWebApplication": "开源Web应用程序", + "CompleteWebDevelopment": "一个完整的Web开发", "ABPFrameworkDescription": "ABP 框架是一个完整的基础架构,可通过遵循软件开发和约定的最佳实践来创建现代 Web 应用程序。", "CommunityDescription": "分享您使用 ABP 框架的经验!", "GetStarted": "开始使用", @@ -628,7 +629,7 @@ "UpgradePaymentInfoSection_LicenseUpgradeDescription": "通过升级您的许可证,您将升级到更高的许可证类型,这将使您获得额外的好处。 请参阅许可证比较表以查看许可证类型之间的差异。", "Landing_Page_CustomerStories": "客户故事", "Landing_Page_OurGreatCustomers": "我们的大客户", - "Landing_Page_WebApplicationFramework": "网络应用框架", + "Landing_Page_WebApplicationFramework": "Web应用框架", "Landing_Page_WebDevelopmentPlatform": "网页开发平台", "Landing_Page_CompleteWebDevelopmentPlatform": "完整的网页开发平台", "Landing_Page_TryFreeDemo": "试用免费演示", diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/zh-Hant.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/zh-Hant.json index 81e22f05ce..c258ea0800 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/zh-Hant.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/zh-Hant.json @@ -320,7 +320,7 @@ "ImplementingDDDBuildingBlocks": "實現 DDD 構建塊", "DomainVsApplicationLogic": "領域邏輯與應用邏輯", "SamplesAndDiscussions": "示例和討論", - "Free": "自由", + "Free": "免費", "Download": "下載", "DDDEBook": "DDD電子書", "ImplementingDDD": "實現領域驅動設計", diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/zh-Hans.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/zh-Hans.json index 7de1be2f2b..9a1373f76b 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/zh-Hans.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/zh-Hans.json @@ -261,7 +261,7 @@ "Surname": "姓", "CompanyName": "公司名", "DoYouAgreePrivacyPolicy": "我同意条款和条件和隐私政策。", - "Free": "自由", + "Free": "免费", "DDDEBook": "DDD电子书", "PracticalGuideForImplementingDDD": "本书是使用 ABP 框架实现领域驱动设计的实用指南。", "IntroducingDDD": "介绍领域驱动设计", @@ -283,7 +283,7 @@ "APIGateway": "API 网关", "Database": "数据库", "Saas": "Saas", - "OpenSourceWebApp": "打开 source
Web 应用程序", + "OpenSourceWebApp": "开源
Web 应用程序", "Framework": "框架", "AuditLoggingExplanation": "自动跟踪系统中的所有操作和数据更改。", "AbpNewCommandExplanation": "使用 ABP 启动模板创建新的解决方案。", diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/zh-Hant.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/zh-Hant.json index c8d31d2002..62a941951e 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/zh-Hant.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/zh-Hant.json @@ -256,7 +256,7 @@ "Surname": "姓", "CompanyName": "公司名", "DoYouAgreePrivacyPolicy": "我同意條款和條件和隱私政策。", - "Free": "自由", + "Free": "免費", "DDDEBook": "DDD電子書", "PracticalGuideForImplementingDDD": "本書是使用 ABP 框架實現領域驅動設計的實用指南。", "IntroducingDDD": "介紹領域驅動設計", diff --git a/docs/zh-Hans/Authorization.md b/docs/zh-Hans/Authorization.md index db0dfdb654..39c64c0905 100644 --- a/docs/zh-Hans/Authorization.md +++ b/docs/zh-Hans/Authorization.md @@ -392,6 +392,45 @@ public override void ConfigureServices(ServiceConfigurationContext context) 启动模板的集成测试已经禁用了授权服务. +### Claims Principal Factory + +声明是认证和授权的重要组成部分. ABP 使用 `IAbpClaimsPrincipalFactory` 来服务创建身份认证声明. 该服务被设计为可扩展的. 如果你需要将自定义声明添加到身份认证票证中, 可以在你的应用程序中实现 `IAbpClaimsPrincipalContributor`. + +**示例:添加一个 `SocialSecurityNumber ` 声明并获取它:** + +```csharp +public class SocialSecurityNumberClaimsPrincipalContributor : IAbpClaimsPrincipalContributor, ITransientDependency +{ + public async Task ContributeAsync(AbpClaimsPrincipalContributorContext context) + { + var identity = context.ClaimsPrincipal.Identities.FirstOrDefault(); + var userId = identity?.FindUserId(); + if (userId.HasValue) + { + var userService = context.ServiceProvider.GetRequiredService(); //Your custom service + var socialSecurityNumber = await userService.GetSocialSecurityNumberAsync(userId.Value); + if (socialSecurityNumber != null) + { + identity.AddClaim(new Claim("SocialSecurityNumber", socialSecurityNumber)); + } + } + } +} + +Configure(options=> +{ + options.RequestedClaims.Add("SocialSecurityNumber") +}) + +public static class CurrentUserExtensions +{ + public static string GetSocialSecurityNumber(this ICurrentUser currentUser) + { + return currentUser.FindClaimValue("SocialSecurityNumber"); + } +} +``` + ## 接下来 * [权限管理模块](Modules/Permission-Management.md)