Проблема аутентификации сеанса и формы: Asp.Net MVC 3 - PullRequest
1 голос
/ 30 января 2011

Поскольку я работаю с приложением Asp.Net MVC 3, я использовал FormAuthentication в своем приложении.

Проблема заключается в том, что после входа в систему, когда я закрываю браузер (без выхода из системы) и снова открываю страницу (скажем, /Admin/ProductList/) в браузере, page is still being invoked и I got focus in my controller too. [Что действительно плохо! :(]

Что я хочу, так это когда я закрываю браузер и возвращаюсь снова на любой странице, он должен перейти к logged in page.

Пожалуйста, просмотрите данный код для вашего понимания.

public void SignIn(string userName, bool isCookiePersistent)
        {

            FormsAuthenticationTicket authTicket = new FormsAuthenticationTicket(1, userName, DateTime.Now, DateTime.Now.AddDays(14),
                createPersistentCookie, string.Empty);

            HttpCookie authCookie = FormsAuthentication.GetAuthCookie(userName, isCookiePersistent);
            if (authTicket.IsPersistent)
            {
                authCookie.Expires = authTicket.Expiration;
            }

            authCookie.Value = FormsAuthentication.Encrypt(authTicket);
            HttpContext.Current.Response.Cookies.Add(authCookie);
        }

public void SignOut()
        {
            FormsAuthentication.SignOut();
        }

Код Web.Config:

<authentication mode="Forms">
      <forms loginUrl="~/Admin/Login" timeout="2880" />
    </authentication>

My page is getting in **Redirection Loop**: This is the main issue.

Мне не хватает any other settings or global.asax event handling?

Пожалуйста, помогите мне, дав мне разрешение.

Заранее спасибо.

1 Ответ

3 голосов
/ 30 января 2011

Здесь:

authCookie.Expires = authTicket.Expiration;

Это то, что делает куки аутентификации постоянными, и браузер сохраняет их на клиентском компьютере, так что при перезапуске браузера куки все еще там. Если вам не нужны постоянные куки, вы можете попробовать это:

public void SignIn(string userName)
{
    var authTicket = new FormsAuthenticationTicket(
        1, userName, DateTime.Now, DateTime.Now.AddDays(14), false, string.Empty
    );
    var authCookie = FormsAuthentication.GetAuthCookie(userName, false);
    authCookie.Value = FormsAuthentication.Encrypt(authTicket);
    HttpContext.Current.Response.Cookies.Add(authCookie);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...