После долгих поисков я не получил никаких ответов и, наконец, мне пришлось вернуться к вам. Ниже я подробно объясняю свою проблему. Это слишком долго, поэтому, пожалуйста, не прекращайте читать. Я объяснил свою проблему простым языком.
Я занимаюсь разработкой проекта asp.net mvc.
Я использую стандартные роли ASP.NET и членство.
Все работает нормально, но функция "Помни меня" не работает вообще.
Я перечисляю все детали работы. Надеюсь, вы, ребята, можете помочь мне решить эту проблему.
Мне просто нужно это:
Мне нужен пользователь для входа в веб-приложение. Во время входа в систему они могут войти в систему с помнить меня или без него.
Если пользователь входит в систему с помнить меня, я хочу, чтобы браузер запомнил их на долгое время, скажем, по крайней мере один год или значительно дольше. То, как они делают это на www.dotnetspider.com, www.codeproject.com, www.daniweb.com и многих других сайтах.
Если пользователь входит в систему, не запомнив меня, браузер должен разрешить доступ к веб-сайту примерно на 20-30 минут, после чего его сеанс должен истечь. Срок их сеанса также должен истечь, когда пользователь входит в систему и выключает браузер без выхода из системы.
Примечание: я успешно реализовал вышеуказанную функциональность без использования стандартных ролей и членства в asp.net, создав свои собственные talbes для пользователя и аутентифицируясь по моей таблице базы данных, установив cookie и сессии в других моих проектах. Но для этого проекта мы с самого начала использовали стандартные роли и членство asp.net. Мы думали, что это сработает, и после того, как все было собрано во время тестирования, оно просто не сработало. и теперь мы не можем заменить существующую функциональность стандартными ролями asp.net и членством моими собственными пользовательскими пользовательскими таблицами и всем прочим, вы понимаете, о чем я говорю.
Либо есть какая-то ошибка со стандартными ролями asp.net и функциональностью членства, либо у меня неверная концепция стандартных ролей asp.net и членства. Я изложил то, что я хочу выше. Я думаю, что это очень просто и разумно.
Что я сделал
- Форма входа с именем пользователя, паролем и полем запомнить меня.
- Мои настройки в web.config:
в действии Мой контроллер, у меня есть это:
FormsAuth.SignIn (имя пользователя, запомнить меня);
public void SignIn (строка userName, bool createPersistentCookie)
{
FormsAuthentication.SetAuthCookie (userName, createPersistentCookie);
}
Теперь проблемы следующие:
Я уже говорил в разделе выше "Мне просто нужно это".
Пользователь может успешно войти в систему. Их сеанс существует столько минут, сколько указано в значении времени ожидания в web.config. Я также дал образец моего web.config. В моем примере, если я установил тайм-аут на 5 минут, то сессия пользователя истекает через 5 минут, это нормально. Но если пользователь закрывает браузер и снова открывает браузер, он все равно может войти на сайт без входа в систему, пока время, указанное в «тайм-ауте», не истекло. Скользящий срок действия значения тайм-аута также работает нормально. Теперь, если пользователь входит в систему с пометкой «Запомнить меня», сессия пользователя истекает через 5 минут. Это не хорошее поведение, не так ли? Я имею в виду, что если пользователь входит в систему с установленным флажком «Запомнить меня», его следует запомнить в течение длительного времени, пока он не выйдет из системы или пользователь не удалит все файлы cookie из браузера вручную. Если пользователь входит в систему, не помнив, что я проверил, его сеанс должен истечь после значений периода ожидания, указанных в web.config, а также, если пользователь закрывает браузер. Проблема в том, что если пользователь закрывает браузер и открывает его снова, он все равно может войти на сайт без входа в систему.
Я много искал в Интернете эту тему, но не смог найти решение. В сообщении в блоге (http://weblogs.asp.net/scottgu/archive/2005/11/08/430011.aspx), сделанном Скоттом Гу на точно такую же тему. Пользователи жалуются на одно и то же в своих комментариях, но г-н Скотт не предлагает простого решения.
Я читал это в следующих местах:
http://weblogs.asp.net/scottgu/archive/2005/11/08/430011.aspx
http://geekswithblogs.net/vivek/archive/2006/09/14/91191.aspx
Я полагаю, это проблема многих пользователей. Как видно из сообщения в блоге, сделанного мистером Скоттом Гу.
Ваша помощь будет по достоинству оценена.
Заранее спасибо.