gpt4 book ai didi

c# - Winforms 基于角色的安全限制

转载 作者:行者123 更新时间:2023-11-30 13:42:36 25 4
gpt4 key购买 nike

我正在使用 Microsoft 的成员资格和角色提供程序实现基于角色的安全性。

我遇到的理论问题是您在方法上实现特定角色,例如:

[PrincipalPermissionAttribute(SecurityAction.Demand, Role="Supervisor")]
private void someMethod() {}

如果在未来的某个时刻,我希望主管再访问 someMethod() 怎么办?

我是否必须更改源代码才能进行更改?我错过了什么吗?

似乎必须有某种方法来抽象主管角色和方法之间的关系,这样我才能在应用程序中创建一种方法来更改角色权限与方法的这种耦合。

任何见解或方向将不胜感激。谢谢。

最佳答案

如果您使用声明式方法,那么是的 - 如果您突然不希望 Supervisor 的成员能够调用您的方法,您需要为此更改源代码。

但是,您也可以通过编程方式在代码中完成所有这些操作:

private void someMethod() 
{
WindowsPrincipal currentUser = (Thread.CurrentPrincipal as WindowsPrincipal);
if (currentUser != null)
{
if (currentUser.IsInRole("Supervisor"))
{
// do something here
}
}

}

您始终可以获得运行 Winforms 应用程序的当前 Windows 主体,然后您可以调用 IsInRole 方法来检查给定用户是否处于给定角色。当然,您也可以将所有这些设置为可配置的,例如从配置文件中读取所需的角色,如果你想让每个人都进入,你只需将角色更改为 Users 或其他

关于c# - Winforms 基于角色的安全限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2616357/

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