Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/315.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/0/asp.net-mvc/15.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/8/lua/3.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# ASP MVC模型或存储库中的Owin上下文_C#_Asp.net Mvc_Asp.net Mvc 4_Owin_Katana - Fatal编程技术网

C# ASP MVC模型或存储库中的Owin上下文

C# ASP MVC模型或存储库中的Owin上下文,c#,asp.net-mvc,asp.net-mvc-4,owin,katana,C#,Asp.net Mvc,Asp.net Mvc 4,Owin,Katana,我正在尝试使用没有身份的Owin。在我的登录过程中,我添加了如下声明: [HttpPost] [AllowAnonymous] public ActionResult Login(Domain.Model.User.User model, string returnUrl) { var response = someFunctionCall(); AuthData data = response.authdata; IEnumerable<C

我正在尝试使用没有身份的Owin。在我的登录过程中,我添加了如下声明:

[HttpPost]
[AllowAnonymous]
public ActionResult Login(Domain.Model.User.User model, string returnUrl)
{
    var response = someFunctionCall();
    AuthData data = response.authdata;
                IEnumerable<Claim> claim = new List<Claim>(){
                                new Claim(ClaimTypes.CookiePath, MvcApplication.ApplicationPath),
                                new Claim(ClaimTypes.Name, model.UserId),
                                new Claim(Constants.ClaimsConstants.1customClaim, data.1customClaim), 
                                new Claim(Constants.ClaimsConstants.2customClaim, data.2customClaim) 
                };
    ClaimsIdentity id = new ClaimsIdentity(claim, CookieAuthenticationDefaults.AuthenticationType);
    HttpContext.GetOwinContext().Authentication.SignIn(new AuthenticationProperties() { IsPersistent = true }, id);
    return RedirectToAction("Index", "Home");
}
稍后在应用程序中,我需要访问索赔,但我似乎无法做到这一点

    private static readonly ClaimsPrincipal user = Thread.CurrentPrincipal as ClaimsPrincipal;
    private static readonly IEnumerable<Claim> claims = user.Claims;
    public static CustomUserInfo Idenitiy
    {
        get
        {
            UserInfo user = new UserInfo()
            {
                Custom1 = claims.Where(c => c.Type == Constants.ClaimsConstants.1customClaim).First().Value,
                Custom2 = claims.Where(c => c.Type == Constants.ClaimsConstants.2customClaim).First().Value
            };
         return user;
         }
     }
private static readonly ClaimsPrincipal user=Thread.CurrentPrincipal as ClaimsPrincipal;
私有静态只读IEnumerable声明=user.claims;
公共静态CustomUserInfo标识
{
得到
{
UserInfo user=newuserinfo()
{
Custom1=claims.Where(c=>c.Type==Constants.ClaimsConstants.1customClaim.First().Value,
Custom2=claims.Where(c=>c.Type==Constants.ClaimsConstants.2customClaim.First().Value
};
返回用户;
}
}

不确定是应该在上下文中使用Owin,还是可以使用Thread.current上下文。当我检查Thread.CurrentPrincipal时,它似乎不在索赔中。有什么想法吗

这是一个解决方法,但为了解决这个问题,我使用了owin上下文,而不是使用Thread.CurrentPrincipal。像这样:

private static readonly ClaimsPrincipal user = System.Web.HttpContext.Current.GetOwinContext().Authentication.User as ClaimsPrincipal;
private static readonly IEnumerable<Claim> claims = user.Claims;
public static CustomUserInfo Idenitiy
{
    get
    {
        UserInfo user = new UserInfo()
        {
            Custom1 = claims.Where(c => c.Type == Constants.ClaimsConstants.1customClaim).First().Value,
            Custom2 = claims.Where(c => c.Type == Constants.ClaimsConstants.2customClaim).First().Value
        };
     return user;
     }
 }
private static readonly ClaimsPrincipal user=System.Web.HttpContext.Current.GetOwinContext().Authentication.user作为ClaimsPrincipal;
私有静态只读IEnumerable声明=user.claims;
公共静态CustomUserInfo标识
{
得到
{
UserInfo user=newuserinfo()
{
Custom1=claims.Where(c=>c.Type==Constants.ClaimsConstants.1customClaim.First().Value,
Custom2=claims.Where(c=>c.Type==Constants.ClaimsConstants.2customClaim.First().Value
};
返回用户;
}
}
仍然不确定Thread.CurrentPrincipal为什么不工作

private static readonly ClaimsPrincipal user = System.Web.HttpContext.Current.GetOwinContext().Authentication.User as ClaimsPrincipal;
private static readonly IEnumerable<Claim> claims = user.Claims;
public static CustomUserInfo Idenitiy
{
    get
    {
        UserInfo user = new UserInfo()
        {
            Custom1 = claims.Where(c => c.Type == Constants.ClaimsConstants.1customClaim).First().Value,
            Custom2 = claims.Where(c => c.Type == Constants.ClaimsConstants.2customClaim).First().Value
        };
     return user;
     }
 }