ASP.NET 成员身份、角色管理和配置文件可以在 C# 类库中使用吗?

发布于 2024-09-03 21:32:49 字数 138 浏览 4 评论 0原文

我知道可以在 winform、wpf 或控制台应用程序中使用此信息。但我宁愿确定具有哪些角色的哪个用户正在运行特定的方法,这样我就可以决定它们并运行不同的代码。

另外在桌面应用程序中。用户如何登录?有没有什么特殊的winform或wpf登录控件?

I know it's possible to use this information in a winform, wpf or console application. But I rather to determine which user with what roles are running a sepecific method, so I could decide upon them and run different codes.

In addition in a desktop app. how a user can login? Is there any special winform or wpf login control?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

鹿童谣 2024-09-10 21:32:49

您应该能够使用“校长”; ASP.NET 登录设置了 IIRC,您可以自己为 winforms、WCF、WPF 等执行此操作。然后您可以使用,例如:

public static bool IsInRole(string role)
{
    var principal = Thread.CurrentPrincipal;
    return principal == null ? false : principal.IsInRole(role);
}

您还可以让系统为您执行检查:

[PrincipalPermission(SecurityAction.Demand, Role="SuperAdmin")]
public void DropDatabase() {/* ... */}

从 3.5 (SP1 ?) 之后,您可以使用 ASP.NET 登录机制来执行 winform/wpf 登录,包括设置主体;在项目属性中启用“启用客户端应用程序服务”(或查看该选项卡上的“了解更多”链接)。

或者,编写您自己的身份/主体非常简单 - 查看 IIdentityIPrincipal ;你不需要做很多事情。

You should be able to use the "principal"; the ASP.NET login sets this up IIRC, and you can do it yourself for winforms, WCF, WPF, etc. You can then use, for example:

public static bool IsInRole(string role)
{
    var principal = Thread.CurrentPrincipal;
    return principal == null ? false : principal.IsInRole(role);
}

You can also get the system to execute the checks for you:

[PrincipalPermission(SecurityAction.Demand, Role="SuperAdmin")]
public void DropDatabase() {/* ... */}

From 3.5 (SP1?) onwards, you can use the ASP.NET login mechanism to perform your winform/wpf logins, including setting up a principal; in project properties enable "Enable client application services" (or see the "Learn more" link on that tab).

Alternatively, writing your own identity/principal is pretty simple - look at IIdentity and IPrincipal ; you don't have to do a lot.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文