Использование Cookie в Asp.Net Mvc 4
110865 просмотра
3 ответа
У меня есть веб-приложение в Asp.Net MVC4, и я хочу использовать cookie для входа и выхода пользователя. Итак, мои действия следующие:
Действие входа
[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");
}
LogOut Action
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");
}
И я использую этот файл cookie в _Loyout следующим образом:
@using EShop.Core
@using Newtonsoft.Json
@{
var userInCookie = Request.Cookies["user"];
}
...
@if (userInCookie != null && userInCookie.Value)
{
<li><a href="#">Salam</a></li>
<li><a href="@Url.Action("UserOut", "Home")">Cıxış</a></li>
}
else
{
<li><a href="@Url.Action("UserLog", "Home")">Giriş</a></li>
}
Но когда я нажимаю * UserOut * действие, это действие происходит в первый раз, но потом оно не работает. Я поставил точку останова для поиска процесса, но он получает действие UserLog, а не UserOut . Мой вопрос заключается в том, где я использую неправильный способ cookie? Каков наилучший способ использования файлов cookie в Asp.Net Mvc4 для этого сценария?
Автор: Elvin Mammadov Источник Размещён: 13.11.2019 11:52Ответы (3)
71 плюса
Попробуйте использовать Response.SetCookie()
, потому что Response.Cookies.Add()
может привести к добавлению нескольких файлов cookie, в то время как SetCookie
обновит существующий файл cookie.
14 плюса
Мы используем Response.SetCookie () для обновления старых файлов cookie, а Response.Cookies.Add () используются для добавления новых файлов cookie. Здесь ниже код CompanyId является обновлением в старом 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.
Автор: Anil Singh
Размещён: 01.10.2014 07:05
2 плюса
userCookie.Expires.AddDays(365);
Эта строка кода ничего не делает. Это эквивалент:
DateTime temp = userCookie.Expires.AddDays(365);
//do nothing with temp
Вы, вероятно, хотите
userCookie.Expires = DateTime.Now.AddDays(365);
Автор: Jonathan Allen
Размещён: 28.12.2017 08:47
Вопросы из категории :
- c# Преобразовать десятичную в двойную?
- c# Как рассчитать чей-то возраст в C #?
- c# Как вы сортируете словарь по значению?
- c# В чем разница между int и Integer в Java и C #?
- asp.net-mvc-4 Как создать шаблон MVC Razor для DisplayFor ()
- asp.net-mvc-4 Выбранное значение в выпадающем списке asp.net MVC 4.0
- asp.net-mvc-4 jQuery Mobile bind events
- asp.net-mvc-4 Может ли Web API конвертировать XML в Json?
- cookies Как бы вы внедрили аутентификацию на основе FORM без резервной базы данных?
- cookies Как настроить cookie HttpOnly в tomcat / java webapps?
- cookies Как однозначно идентифицировать компьютеры, посещающие мой веб-сайт?
- cookies Мне нужно получить все куки из браузера
- action WordPress: действия, фильтры и хуки
- action commandButton / commandLink / ajax действие / метод слушателя не вызван или входное значение не установлено / обновлено
- action админ панель последние действия
- action Моделирование системы разрешений
- httpcookie Как вы обновляете куки в PHP?
- httpcookie Использование Cookie в Asp.Net Mvc 4
- httpcookie Отсутствует безопасный атрибут в зашифрованном сеансе (SSL) Повторная проверка cookie
- httpcookie Преобразовать HttpCookieCollection в NameValueCollection