Аутентификация не длится в течение сеанса пользователя - PullRequest
0 голосов
/ 13 февраля 2012

Мой веб-сайт постоянно вынуждает меня вернуться к странице входа (проблема аутентификации) между запросами.

Мой локальный веб-сайт работает нормально и точно такой же код. Нет проблемы с аутентификацией ...

Я рыскал по сети и весь день рвал себе на волосы эту проблему, пробуя разные вещи, как предлагалось и т. Д.

Может кто-нибудь объяснить мне, что происходит и как я могу это исправить?

[HttpPost] 
        public ActionResult LogOn(LogOnModel model, string returnUrl) 
        { 
            if (ModelState.IsValid) 
            { 
                if (Membership.ValidateUser(model.UserName, model.Password)) 
                { 
                    FormsAuthentication.SetAuthCookie(model.UserName, model.RememberMe); 

                    Session["Email"] = model.Email; 

                    if (Url.IsLocalUrl(returnUrl) && returnUrl.Length > 1 && returnUrl.StartsWith("/") 
                        && !returnUrl.StartsWith("//") && !returnUrl.StartsWith("/\\")) 
                    { 
                        return Redirect(returnUrl); 
                    } 
                    else 
                    { 
                        return RedirectToAction("Index", "Home"); 
                    } 
                } 
                else 
                { 
                    ModelState.AddModelError("", YeagerTechResources.Resources.AcctUserNamePswdInCorrect); 
                } 
            } 

            // If we got this far, something failed, redisplay form 
            return View(model); 
}

Ниже приведено следующее изображение файлов cookie, доступное сразу после того, как я войду на сайт производства. Обратите внимание, что файлы cookie отсутствуют.

Информация о файлах cookie - http://yeagertech.com/

Теперь, если вы посмотрите на ту же информацию, выполняющую тот же код для моего сайта разработки, вы увидите следующее. Это сводит меня с ума и тратит на это целый день. Буду признателен всем, кто поможет!

Информация о файлах cookie - http://localhost:4514/

ИМЯ

прокси

VALUE

http://localhost:62613/proxy/0/

DOMAIN

1031 * локальный *

PATH

/

EXPIRES

02.12.2012 20:21:16

Обратите внимание, что после нескольких запросов он возвращается на страницу входа - только на производственном сайте, а не на моем локальном сайте.

Похоже, что cookie на производственном сайте не имеет достаточно длительного срока хранения, прежде чем он должен вернуться к странице входа в систему.

Я хочу, чтобы куки сохранялись хотя бы в течение сеанса пользователя.

Что я могу сделать, чтобы решить эту проблему?

Еще раз спасибо ....

Мне нужно было настроить параметры IIS, связанные с этим веб-сайтом, что я и сделал, и получил следующую ошибку:

«Невозможно использовать SQL Server, так как состояние сеанса ASP.NET версии 2.0 не установлено на сервере SQL. Установите состояние сеанса ASP.NET для SQL Server версии 2.0 или выше»

Получив эту ошибку, я обнаружил, что на SQL Server необходимо включить состояние сеанса, поэтому я попытался запустить файл InstallSqlState.SQL (находится в папке версии Microsoft.Net на моем локальном ПК).

После попытки запуска сценария происходит сбой (с указанной ниже ошибкой), поскольку на моем сервере баз данных в папке SystemDatabases нет базы данных «msdb».

"Разрешение CREATE DATABASE отклонено в базе данных" master ". Если задание не существует, ожидается сообщение об ошибке из msdb.dbo.sp_delete_job. Сообщение 229, Уровень 14, Состояние 5, Процедура sp_delete_job, Строка 1 Разрешение EXECUTE было Отказано в объекте 'sp_delete_job', базе данных 'msdb', схеме 'dbo'. Сообщение 911, уровень 16, состояние 1, строка 10 База данных 'ASPState' не существует. Убедитесь, что имя введено правильно. "

Итак, если в моей размещенной базе данных нет базы данных msdb (все, что у меня есть, это master и tempdb), я не могу настроить состояние сеанса на моем сервере sql.

Я хотел бы знать, как действовать дальше.

Кстати, я считаю очень маловероятным, что, даже если он был включен, это решило бы проблему. Моя ситуация не вписывается ни в один из трех пунктов, которые вы изначально наметили.

Это маленькая БД, в которой почти нет записей. Я просто тестирую его на своем веб-сайте, чтобы убедиться, что он работает нормально, прежде чем начать добавлять записи. Промежуток времени также отсутствует.

Я перехожу на пару страниц в порядке, а затем внезапно возвращается на страницу входа в систему ...

Если моя локальная машина работает нормально, это определенно связано с тем, что мне нужно установить, потому что я работаю на ваших серверах.

Буду признателен за любую помощь ....

1 Ответ

0 голосов
/ 27 февраля 2012

Я также сталкиваюсь с этим типом проблемы, но не в MVC .... проблема заключалась в том, что срок действия билета FormsAuthentication истекает в течение 1 минуты на хост-сервере .......

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

Я также постоянно на связи с моим хостинг-провайдером, но их команда разработчиков продукта тратит слишком много времени на решение проблемы

...