如何阅读MVC OWIN AuthenticationProperties?

时间:2014-07-23 00:43:35

标签: c# .net asp.net-mvc owin

我在签署用户时设置IsPersistent,如何读取该值?

var identity = await UserManager.CreateIdentityAsync(appUser, DefaultAuthenticationTypes.ApplicationCookie);
HttpContext.GetOwinContext().Authentication.SignIn(new AuthenticationProperties() { IsPersistent = false }, identity);

7 个答案:

答案 0 :(得分:1)

你可以试试这个,我还没试过它

IAuthenticationManager AuthenticationManager
{
  get { return HttpContext.GetOwinContext().Authentication; }
}

答案 1 :(得分:1)

AspNet.Identity使您可以访问会话的bool的{​​{1}}值。读取其值的最直接方法是调用IsPersistent

AuthenticateAsync()

请注意,您需要将其包装在@using Microsoft.AspNet.Identity; var authenticateResult = await HttpContext.GetOwinContext() .Authentication.AuthenticateAsync( DefaultAuthenticationTypes.ApplicationCookie ); var isPersistent = authenticateResult.Properties.IsPersistent; //// true or false 方法中,例如:

async

答案 2 :(得分:0)

由于没有太多描述,我不确定上下文。无论如何,当您对当前请求执行身份验证时,您可以获得随登录呼叫提供的所有AuthenticationProperties。代码将是......

AuthenticateResult authenticateResult = await HttpContext.GetOwinContext().Authentication.AuthenticateAsync(DefaultAuthenticationTypes.ApplicationCookie);

AuthenticationProperties yourAuthenticationProperties = authenticateResult.Properties;

答案 3 :(得分:0)

由于@Nkosi说你可以从OWIN中检索信息,因为它没有存储在那里,你需要检索cookie本身并手动解析信息,但为此您需要一个像this one这样的OWIN中间件,这样您就可以根据需要操作cookie。

答案 4 :(得分:0)

如果您在ConfigureAuth中配置了static property CookieAuthOptions,或者任何其他AuthOption也应该实现CookieAuthOptions(例如:ISecureDataFormat<AuthenticationTicket>),则可以声明OAuthBearerOptions.AccessTokenFormat。这个包含Protect&amp; Unprotect方法。

每当您需要访问AuthenticationProperties时,您必须掌握Owin上下文以获取对实现正确格式的故障单的引用。

作为基本的示例步骤,

Startup.cs => public static CookieAuthenticationOptions  CookieAuthOptions; 
Startup.cs => ConfigureAuth => CookieAuthOptions.CookieName = "xxx"; 
BaseController.cs => Startup.CookieAuthOptions.TicketDataFormat.Unprotect(Request.Cookies["xxx"].Value).Properties;

得到你想要的东西。

PS:你没有提到你需要它的地方,我认为它将在一个控制器中。

答案 5 :(得分:0)

AuthenticateResult authenticateResult = await HttpContext.GetOwinContext()。Authentication.AuthenticateAsync(DefaultAuthenticationTypes.ApplicationCookie);

AuthenticationProperties yourAuthenticationProperties = authenticateResult.Properties;

答案 6 :(得分:0)

var authenticationInfo = await HttpContext.Authentication.GetAuthenticateInfoAsync(DefaultAuthenticationTypes.ApplicationCookie);
authenticationInfo.Properties ...

我假设 DefaultAuthenticationTypes.ApplicationCookie 包含cookie身份验证方案。