Установить срок действия файлов cookie проверки подлинности формы
Я прочитал следующий ответ, я думаю, что это должно сработать, но где и какую часть поместить в этот комментарий?
HttpCookie authCookie = FormsAuthentication.GetAuthCookie(username, isPersistent);
if (!isPersistent)
{
//this is because if it was not set then it got
//automatically set to expire next year even if
//the cookie was not set as persistent
authCookie.Expires = DateTime.Now.AddMinutes(15);
}
Response.Cookies.Add(authCookie);
Это в global.asax или в самом контроллере?
Ниже приведены мои коды.
Из представления контроллера:
[HttpPost]
public ActionResult Login(User user, string returnUrl)
{
if (ModelState.IsValid)
{
var username = user.Username;
var getPassword = (from item in db.User
where item.Username == username
select new UserModel()
{
Password = item.Password
}
).SingleOrDefault();
if (getPassword != null)
{
var hashingPass = Models.PasswordHash.ValidatePassword(user.Password, getPassword.Password);
var getAdmin = (from item in db.User
where item.Username == username && hashingPass == true
select new UserModel()
{
UserId = item.UserId
}
).ToList();
if (getAdmin.Count.Equals(1))
{
FormsAuthentication.SetAuthCookie(username, false);
if (Url.IsLocalUrl(returnUrl) && returnUrl.Length > 1 && returnUrl.StartsWith("/") && !returnUrl.StartsWith("//") && !returnUrl.StartsWith("/\\"))
{
return Redirect(returnUrl);
}
else
{
return RedirectToAction("Index");
}
}
else
{
ModelState.AddModelError("", "The username or password provided is incorrect.");
}
}
else
{
ModelState.AddModelError("", "The username or password provided is incorrect.");
}
}
return View(user);
}
Из представления HTML:
@using (Html.BeginForm())
{
@Html.ValidationSummary(true)
<form role="form">
<fieldset>
<div class="form-group">
<label for="Username">Username</label>
<input class="form-control" placeholder="Enter Username" name="Username" id="Username" type="text" autofocus oninput="setCustomValidity('')" required/>
</div>
<div class="form-group">
<label for="Password">Password</label>
<input class="form-control" placeholder="Enter Password" name="Password" id="Password" type="password" value="" oninput="setCustomValidity('')" required>
</div>
<button type="submit" style="background-color:#f7aa52; border:1px solid #f78952; color:#fff;" class="btn btn-lg btn-block">Login</button>
</fieldset>
</form>
}
1 ответ
Это на уровне контроллера.
Вы также можете указать срок действия файла cookie в файле web.config в разделе
<system.web>
<authentication mode="Forms">
<forms timeout="50000000" slidingExpiration="true"/>
</authentication>
</system.web>