Asp.Net MVC3-FormsAuthentication, как истечь cookie при закрытии браузера?

Я хочу истечь cookie, который для FormsAuthentication когда браузер закрыт. (Я хочу, чтобы он работал как PHP-сессия)

вот мой код аутентификации, который находится в модели (не контроллер).

Модели / Auth.cs

FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(
    1,
    model.UserId,
    DateTime.Now,
    DateTime.Now.AddDays(1),
    true,
    model.UserId +" "+reader["lastname"],
    FormsAuthentication.FormsCookiePath);

string hash = FormsAuthentication.Encrypt(ticket);
HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, hash);

if (ticket.IsPersistent)
{
    cookie.Expires = ticket.Expiration;
}

HttpContext.Current.Response.Cookies.Add(cookie);

Web.config

<authentication mode="Forms">
    <forms name="user" timeout="60" loginUrl="~/Auth/login" path="/"></forms>
</authentication>
<authorization>
    <deny users="?" />
</authorization>

и еще один вопрос, есть 2 раза установка тайм-аута cookie,

в билете,

DateTime.Now.AddDays(1),

и в аутентификации в веб.конфиг файл

<forms name="user" timeout="60" loginUrl="~/Auth/login" path="/"></forms>

насколько они отличаются, и какой из них будет влиять на фактический срок действия куки?

кто-нибудь знает, пожалуйста, посоветуйте мне.

спасибо!

2 ответов


вы не можете истечь cookie, когда браузер закрыт. Однако вы можете сделать cookie непостоянным, что означает, что он не сохранит cookie, и, таким образом, при открытии нового браузера у него будет новый cookie (имейте в виду, однако, что с тем, как большинство браузеров кэшируют непостоянные cookie с вкладками, весь браузер должен быть закрыт для этого, чтобы очистить его).

Что касается вашего второго вопроса, интернет.запись config используется, если не задано время ожидания.


событие jQuery unload можно использовать для обнаружения закрытия браузера.

но это событие также запускается, когда: пользователь нажал на ссылку, чтобы покинуть страницу, или набрал новый URL в адресной строке. Кнопки вперед и назад вызовут событие.Даже перезагрузка страницы сначала создаст событие unload.

привязать обработчик событий к событию JavaScript" unload".

ответьте на свой второй вопрос, тайм-аут, который вы установили в своем коде с помощью override the web.запись config.