如何将当前上下文传递给对象c#

时间:2013-06-17 05:00:33

标签: c# authorization credentials

我正在创建一个首次使用我的用户帐户登录的应用程序。此用户帐户可以是我自己的应用程序数据库中的Windows或自我管理帐户。

现在我想在访问我的应用程序的任何业务对象之前授权登录用户。对象与数据库表进行映射,因此最终我想先授权用户,是否将数据提供给用户。

登录后,我将用户凭据全局存储为UserCredential类的对象。但我不希望在创建它时将此凭据传递给每个对象。

有没有办法检查/到达我自动创建的每个业务对象的应用程序上下文(包括我全局存储的UserCredential对象)?

我想在C#中实现这一目标。代码示例非常感谢。

1 个答案:

答案 0 :(得分:0)

您应该查看PrincipalPermissionAttribute类,这是MSDN文档:

PrincipalPermissionAttribute class MSDN documentation

当Thread.CurrentPrincipal与安全断言不匹配时,PrincipalPermissionAttribute会抛出SecurityException。

示例:

用户名是GDroid:

[PrincipalPermission(SecurityAction.Demand, Name = "GDroid")]
public void YourBusinessMethod()
{
    // Do something
}

用户属于管理员角色:

[PrincipalPermission(SecurityAction.Demand, Role = "Admin")]
public void YourBusinessMethod()
{
    // Do something
}

用户已通过身份验证:

[PrincipalPermission(SecurityAction.Demand, Authenticated = true)]
public void YourBusinessMethod()
{
    // Do something
}