如何使用 ProtectedPersonalData 属性
How to use ProtectedPersonalData attribute
我找到了 ASP.NET Core Identity 框架的 class、ProtectedPersonalData
(link) 属性,但我似乎找不到任何关于如何操作的文档使用它。
文档只说:Used to indicate that a something is considered personal data and should be protected.
最后,我能够加密身份用户 class 字段 (link)(例如电子邮件字段),但不能加密继承 属性 的身份用户的任何 属性 =37=].
public class ApplicationUser : IdentityUser {
[ProtectedPersonalData]
public string MyProperty { get; set; }
}
我将此添加到身份配置中:
services.AddDefaultIdentity<ApplicationUser>(options => {
options.Stores.ProtectPersonalData = true;
})
.AddRoles<IdentityRole>()
.AddEntityFrameworkStores<ApplicationDbContext>();
此外,我实现了保护器 classes:
public class Lookup : ILookupProtector {
public string Protect(string keyId, string data) {
return new string(data?.Reverse().ToArray());
}
public string Unprotect(string keyId, string data) {
return new string(data?.Reverse().ToArray());
}
}
public class Protector : IPersonalDataProtector {
public string Protect(string data) {
return new string(data?.Reverse().ToArray());
}
public string Unprotect(string data) {
return new string(data?.Reverse().ToArray());
}
}
public class KeyRing : ILookupProtectorKeyRing {
public string this[string keyId] => "key";
public string CurrentKeyId => "key";
public IEnumerable<string> GetAllKeyIds() {
return new string[] { "key" };
}
}
可以加密 MyProperty
字段吗?
请给我指出信息或提供一些示例。
更新:
我注意到代码从未进入 属性 MyProperty
的 Protect
方法。
您需要向符合 PersonalData 的属性添加数据注释,如下所示:
[ProtectedPersonalData]
[PersonalData]
public string Firstname { get; set; }
[ProtectedPersonalData]
[PersonalData]
public string Lastname { get; set; }
为了激活您需要在Startup.cs:
中注册服务的过程
// ProtectedData
services.AddScoped<ILookupProtectorKeyRing, KeyRing>();
services.AddScoped<ILookupProtector, LookupProtector>();
services.AddScoped<IPersonalDataProtector, PersonalDataProtector>();
示例存储库
在这里您可以找到一个示例存储库,其中包含带有 Microsoft Identity 帐户和 ProtectedData 实施的项目 Blazor WASM。
我找到了 ASP.NET Core Identity 框架的 class、ProtectedPersonalData
(link) 属性,但我似乎找不到任何关于如何操作的文档使用它。
文档只说:Used to indicate that a something is considered personal data and should be protected.
最后,我能够加密身份用户 class 字段 (link)(例如电子邮件字段),但不能加密继承 属性 的身份用户的任何 属性 =37=].
public class ApplicationUser : IdentityUser {
[ProtectedPersonalData]
public string MyProperty { get; set; }
}
我将此添加到身份配置中:
services.AddDefaultIdentity<ApplicationUser>(options => {
options.Stores.ProtectPersonalData = true;
})
.AddRoles<IdentityRole>()
.AddEntityFrameworkStores<ApplicationDbContext>();
此外,我实现了保护器 classes:
public class Lookup : ILookupProtector {
public string Protect(string keyId, string data) {
return new string(data?.Reverse().ToArray());
}
public string Unprotect(string keyId, string data) {
return new string(data?.Reverse().ToArray());
}
}
public class Protector : IPersonalDataProtector {
public string Protect(string data) {
return new string(data?.Reverse().ToArray());
}
public string Unprotect(string data) {
return new string(data?.Reverse().ToArray());
}
}
public class KeyRing : ILookupProtectorKeyRing {
public string this[string keyId] => "key";
public string CurrentKeyId => "key";
public IEnumerable<string> GetAllKeyIds() {
return new string[] { "key" };
}
}
可以加密 MyProperty
字段吗?
请给我指出信息或提供一些示例。
更新:
我注意到代码从未进入 属性 MyProperty
的 Protect
方法。
您需要向符合 PersonalData 的属性添加数据注释,如下所示:
[ProtectedPersonalData]
[PersonalData]
public string Firstname { get; set; }
[ProtectedPersonalData]
[PersonalData]
public string Lastname { get; set; }
为了激活您需要在Startup.cs:
中注册服务的过程// ProtectedData
services.AddScoped<ILookupProtectorKeyRing, KeyRing>();
services.AddScoped<ILookupProtector, LookupProtector>();
services.AddScoped<IPersonalDataProtector, PersonalDataProtector>();
示例存储库
在这里您可以找到一个示例存储库,其中包含带有 Microsoft Identity 帐户和 ProtectedData 实施的项目 Blazor WASM。