登录后,## owin无法获得User.Identity

时间:2015-10-02 04:35:28

标签: c# owin claims-based-identity asp.net-identity-2

完成登录代码后

        var identity = new ClaimsIdentity(claims, OAuthConfigur.AuthenticationType);

        this.AuthenticationManager.SignIn(new AuthenticationProperties
        {
            ExpiresUtc = DateTimeOffset.Now.AddMinutes(30),
            IsPersistent = false
        }, identity);

        return RedirectToAction("Index", "Home");

在RedirectToAction之后,broswer中有cookie 但是当授权属性没有授权时。
在我的自定义Authorize actionfilter中,

httpContext.User.Identity.IsAuthenticated

总是返回false。

我找到了一种获取身份的方法:

    private ClaimsIdentity GetIdentity(HttpContextBase httpContext)
    {
        var ticket = httpContext.GetOwinContext().Authentication
                .AuthenticateAsync(OAuthConfigur.AuthenticationType).Result;
        var identity = ticket != null ? ticket.Identity : null;
        return identity;
    }

在此功能之后,我可以获得用户身份。

这是正确的吗?

如果我需要用户登录信息,我每次都需要调用此函数吗?

谢谢你回复!

这是我的Startup.cs

 public void ConfigureAuth(IAppBuilder app)
    {
        // Enable Application Sign In Cookie
        app.UseCookieAuthentication(new CookieAuthenticationOptions
        {
            AuthenticationType = OAuthConfigur.AuthenticationType,
            AuthenticationMode = AuthenticationMode.Passive,
            LoginPath = new PathString(OAuthPaths.LoginPath),
            LogoutPath = new PathString(OAuthPaths.LogoutPath),
            ExpireTimeSpan = TimeSpan.FromMinutes(20)
        });

        // Setup Authorization Server
        app.UseOAuthAuthorizationServer(new CustomerOAuthAuthorizationServerOptions());
    }
相关问题