Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/17.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
Asp.net 如何在MVC5中设置文本的超时_Asp.net_Asp.net Mvc_Claims Based Identity - Fatal编程技术网

Asp.net 如何在MVC5中设置文本的超时

Asp.net 如何在MVC5中设置文本的超时,asp.net,asp.net-mvc,claims-based-identity,Asp.net,Asp.net Mvc,Claims Based Identity,当用户访问一个网站并输入他们存储在数据库中的凭据时,我们将在创建身份验证时进行验证 如何设置超时? 使用mvc5 我的身份验证如下所示: var claims = new List<Claim>(); claims.Add(new Claim("UserId", user.UserID.ToString())); claims.Add(new Claim(ClaimTypes.Name, user.FirstName + " " + u

当用户访问一个网站并输入他们存储在数据库中的凭据时,我们将在创建身份验证时进行验证

如何设置超时? 使用mvc5

我的身份验证如下所示:

        var claims = new List<Claim>();
        claims.Add(new Claim("UserId", user.UserID.ToString()));
        claims.Add(new Claim(ClaimTypes.Name, user.FirstName + " " + user.LastName));
        claims.Add(new Claim(ClaimTypes.Email, user.Email));
        claims.Add(new Claim(ClaimTypes.NameIdentifier, user.UserID.ToString()));
        var id = new ClaimsIdentity(claims, DefaultAuthenticationTypes.ApplicationCookie);

        var ctx = Request.GetOwinContext();
        var authenticationManager = ctx.Authentication;
        authenticationManager.SignIn(id); 
// Enable the application to use a cookie to store information for the signed in user
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
    AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
    LoginPath = new PathString("/Account/Login"),
    ExpireTimeSpan = TimeSpan.FromDays(2)
});
var索赔=新列表();
添加(新声明(“UserId”,user.UserId.ToString());
添加(新索赔(ClaimTypes.Name,user.FirstName+“”+user.LastName));
添加(新索赔(ClaimTypes.Email,user.Email));
添加(新声明(ClaimTypes.NameIdentifier,user.UserID.ToString());
var id=新的索赔实体(索赔、DefaultAuthenticationTypes.ApplicationOkie);
var ctx=Request.GetOwinContext();
var authenticationManager=ctx.Authentication;
authenticationManager.SignIn(id);

设置固定过期时间跨度的方法是在
Startup.Auth.cs
文件中设置
ExpireTimeSpan
属性,如下所示:

        var claims = new List<Claim>();
        claims.Add(new Claim("UserId", user.UserID.ToString()));
        claims.Add(new Claim(ClaimTypes.Name, user.FirstName + " " + user.LastName));
        claims.Add(new Claim(ClaimTypes.Email, user.Email));
        claims.Add(new Claim(ClaimTypes.NameIdentifier, user.UserID.ToString()));
        var id = new ClaimsIdentity(claims, DefaultAuthenticationTypes.ApplicationCookie);

        var ctx = Request.GetOwinContext();
        var authenticationManager = ctx.Authentication;
        authenticationManager.SignIn(id); 
// Enable the application to use a cookie to store information for the signed in user
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
    AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
    LoginPath = new PathString("/Account/Login"),
    ExpireTimeSpan = TimeSpan.FromDays(2)
});
注意,您还必须将cookie设置为持久化。在您的代码中,除了用户名和密码外,您还必须传入bool,然后更改

authenticationManager.SignIn(id); 
将来


使用以下内容,您不需要使用Startup.cs

AuthenticationManager.SignIn(new AuthenticationProperties() { IsPersistent = true, ExpiresUtc = DateTime.UtcNow.AddHours(1), }, id);

工作正常,但只是一个更正:authenticationManager.SignIn(新的AuthenticationProperties{IsPersistent=true},id);很高兴听到这个消息。请确保将问题标记为已回答。不幸的是,这不适用于我,还有其他选择吗?这对我很有帮助,因为我的超时时间对于不同的用户是不同的。