MVC 2 аутентификация. Cookie быстрее теряют проверку - PullRequest
0 голосов
/ 16 марта 2012

После конвертации в MVC yo MVC 2 у меня возникают проблемы с аутентификацией.В этом проекте используется стандартное членство.

[HandleError]
public class AccountController : Controller
{
    private readonly IServiceFactory _modelFactory;

    public AccountController(IServiceFactory _modelFactory)
    {
        this._modelFactory = _modelFactory;
    }


    public ActionResult LogOn()
    {
        return View();
    }

    [HttpPost]
    public ActionResult LogOn(string userName, string password, bool rememberMe, string returnUrl)
    {
        if (!this.ValidateLogOn(userName, password))
        {
            return View();
        }

        FormsAuthentication.RedirectFromLoginPage(userName, rememberMe);
        //FormsAuthentication.SetAuthCookie(userName, rememberMe);
        if (!String.IsNullOrEmpty(returnUrl))
        {
            return Redirect(returnUrl);
        }

        return RedirectToAction(ControllerNaming.Action<AdminController>(x => x.Dashboard()), ControllerNaming.Name<AdminController>());
    }

    public ActionResult LogOff()
    {
        FormsAuthentication.SignOut();

        return RedirectToAction(ControllerNaming.Action<HomeController>(x => x.Default()), ControllerNaming.Name<HomeController>());
    }


    protected override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        if (filterContext.HttpContext.User.Identity is WindowsIdentity)
        {
            throw new InvalidOperationException("Windows authentication is not supported.");
        }
    }

    #region Validation Methods

    private bool ValidateLogOn(string userName, string password)
    {
        if (String.IsNullOrEmpty(userName))
        {
            ModelState.AddModelError("username", "You must specify a username.");
        }
        if (String.IsNullOrEmpty(password))
        {
            ModelState.AddModelError("password", "You must specify a password.");
        }
        if (!this.IsValidateUserNameAndPassword(userName, password))
        {
            ModelState.AddModelError("password", "Password is not valid.");
            Thread.Sleep(5000);
        }

        return ModelState.IsValid;
    }

    private bool IsValidateUserNameAndPassword(string userName, string password)
    {
        IUser user = this._modelFactory.UserService.Login(userName, password);

        return user.IsValid;
    }

    #endregion
}

и настройка

<authentication mode="Forms">
  <forms cookieless="UseCookies" loginUrl="~/Account/LogOn" slidingExpiration="true" timeout="3000" />
</authentication>

Я проверяю в браузере и вижу куки аутентификации.Но приложение хочет снова войти в систему через 1-5 минут, если мне нечего делать на странице

sessionState

<sessionState timeout="150" ></sessionState>

Но у меня есть один интересный факт.Это приложение работает нормально на местном IIS.Но когда я перешел на хостинг, у меня возникла эта проблема.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...