gpt4 book ai didi

c# - 如何设置多语言 PrincipalPermission 角色名称?

转载 作者:太空狗 更新时间:2023-10-29 21:37:17 25 4
gpt4 key购买 nike

我正在尝试使用 Windows 帐户保护 WCF 服务。该服务应该在许多使用不同语言的系统上运行。我如何设置具有与语言无关的角色名称的 PrincipalPermission?

我发现了像这样的丑陋的解决方法。

[PrincipalPermission(SecurityAction.Demand, Role = "Builtin\\Administrators")] // English
[PrincipalPermission(SecurityAction.Demand, Role = "Vordefiniert\\Administratoren")] // German
public string HelloWorld()
{
return "Hello";
}

我认为这不是一个很好的解决方案,有什么办法可以使这种语言独立吗?有没有办法使用帐户 SID 而不是字符串?

最佳答案

您可以推出自己的权限属性来处理翻译:

 [Serializable, AttributeUsage(AttributeTargets.Method | AttributeTargets.Class, AllowMultiple = true, Inherited = false), ComVisible(true)] 
public sealed class AdministratorPrincipalPermissionAttribute : CodeAccessSecurityAttribute
{
public AdministratorPrincipalPermissionAttribute(SecurityAction action) : base(action)
{ }

public override IPermission CreatePermission()
{
var identifier = new SecurityIdentifier(WellKnownSidType.BuiltinAdministratorsSid, null);
var role = identifier.Translate(typeof(NTAccount)).Value;
return new PrincipalPermission(null, role);
}
}

请注意,这需要一些额外的部署工作(gac、caspol 等)。

关于c# - 如何设置多语言 PrincipalPermission 角色名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/820289/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com