Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将当前上下文传递给对象c#_C#_Authorization_Credentials - Fatal编程技术网

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

如何将当前上下文传递给对象c#,c#,authorization,credentials,C#,Authorization,Credentials,我正在创建一个应用程序,第一次使用我的用户帐户登录。此用户帐户可以是windows或我自己的应用程序数据库中的自我管理帐户 现在,我想在访问我的应用程序的任何业务对象之前授权登录的用户。对象与数据库表映射,所以最终我想首先授权用户,不管是否将数据返回给用户 登录后,我将用户凭据全局存储为UserCredential类的对象。但我不想在创建每个对象时将此凭据传递给它 是否有任何方法可以自动检查/访问我正在进一步创建的每个业务对象的应用程序上下文(包括我全局存储的UserCredential对象)

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

现在,我想在访问我的应用程序的任何业务对象之前授权登录的用户。对象与数据库表映射,所以最终我想首先授权用户,不管是否将数据返回给用户

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

是否有任何方法可以自动检查/访问我正在进一步创建的每个业务对象的应用程序上下文(包括我全局存储的
UserCredential
对象)


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

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

当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
}

[我建议]依赖注入。另外,不要传递“凭据”,只传递用户/授权信息,这些信息可能是以前通过凭据建立的。在web服务中,这可能是在请求开始时建立的;如果可能的话,非常快?我通过传递授权信息来理解。但是使用依赖注入的示例代码将非常受欢迎…!!-Thanks@user2246674-他在告诉海报问题的发帖人,不是你