如何获取isPersistent(AuthenticationProperties)

时间:2016-07-25 09:12:51

标签: c# asp.net-identity asp.net-mvc-5

我正在使用带有asp.net身份版本2.2.1和实体框架6.1.3的asp.net MVC 5.2。 在某些时候,在控制器中,我需要知道当前正在使用的AuthenticationProperties的内容,更具体地说,我需要知道isPersistent的值。

2 个答案:

答案 0 :(得分:0)

可能会有所帮助:

var isPersistent  = ((System.Web.Security.FormsIdentity) User.Identity).Ticket.IsPersistent;

或者

   FormsIdentity id = (FormsIdentity)HttpContext.Current.User.Identity;
   FormsAuthenticationTicket ticket = id.Ticket;

   var isPersistent = ticket.IsPersistent.ToString();

答案 1 :(得分:0)

您可以通过调用AuthenticationProperties通过AspNet.Identity来访问当前会话的AuthenticateAsync()的内容。此处的表单身份验证不相关,因为会话属于Identity

要获取整个AuthenticationProperties对象:

@using Microsoft.AspNet.Identity;
@using System.Threading.Tasks;
public async Task<ActionResult> SomeMethodName(...) {
{    
    var authenticateResult = await HttpContext.GetOwinContext()
                       .Authentication.AuthenticateAsync(
                           DefaultAuthenticationTypes.ApplicationCookie
                       );

您拥有authenticateResult,提取属性值(在您的情况下为IsPersistent)的语法为:

var isPersistent = authenticateResult.Properties.IsPersistent; //// true or false