Utilizzo dei cookie in Asp.Net Mvc 4

Ho un’applicazione web in Asp.Net MVC4 e voglio usare i cookie per l’accesso e il logout dell’utente. Quindi le mie azioni come segue:

Login azione

[HttpPost] public ActionResult Login(string username, string pass) { if (ModelState.IsValid) { var newUser = _userRepository.GetUserByNameAndPassword(username, pass); if (newUser != null) { var json = JsonConvert.SerializeObject(newUser); var userCookie = new HttpCookie("user", json); userCookie.Expires.AddDays(365); HttpContext.Response.Cookies.Add(userCookie); return RedirectToActionPermanent("Index"); } } return View("UserLog"); } 

Azione LogOut

  public ActionResult UserOut() { if (Request.Cookies["user"] != null) { var user = new HttpCookie("user") { Expires = DateTime.Now.AddDays(-1), Value = null }; Response.Cookies.Add(user); } return RedirectToActionPermanent("UserLog"); } 

E io uso questo cookie in _Loyout come segue:

 @using EShop.Core @using Newtonsoft.Json @{ var userInCookie = Request.Cookies["user"]; } ... @if (userInCookie != null && userInCookie.Value) { 
  • Salam
  • Cıxış
  • } else {
  • Giriş
  • }

    Ma quando faccio clic su * UserOut * action questa azione si verifica la prima volta, ma poi non funziona. Metto breakpoint per cercare il processo ma ottiene l’ azione UserLog non UserOut . La mia domanda è quella in cui utilizzo un modo sbagliato di cookie? Qual è il modo migliore di utilizzare questo cookie in Asp.Net Mvc4 per questo scenario?

      Prova a utilizzare Response.SetCookie() , perché Response.Cookies.Add() può causare l’aggiunta di più cookie, mentre SetCookie aggiornerà un cookie esistente.

      Stiamo utilizzando Response.SetCookie () per aggiornare i vecchi cookie e Response.Cookies.Add () vengono utilizzati per aggiungere i nuovi cookie. Di seguito il codice CompanyId è aggiornato nel vecchio cookie [OldCookieName].

       HttpCookie cookie = Request.Cookies["OldCookieName"];//Get the existing cookie by cookie name. cookie.Values["CompanyID"] = Convert.ToString(CompanyId); Response.SetCookie(cookie); //SetCookie() is used for update the cookie. Response.Cookies.Add(cookie); //The Cookie.Add() used for Add the cookie. 
       userCookie.Expires.AddDays(365); 

      Questa riga di codice non fa nulla. È l’equivalente di:

       DateTime temp = userCookie.Expires.AddDays(365); //do nothing with temp 

      Probabilmente lo vuoi

       userCookie.Expires = DateTime.Now.AddDays(365);