После долгих поисков я не получил никаких ответов, и, наконец, мне пришлось вернуться к вам. Ниже я подробно объясняю свою проблему. Это слишком долго, поэтому, пожалуйста, не прекращайте чтение. Я объяснил свою проблему простым языком.
Я разрабатываю проект asp.net mvc. Я использую стандартные роли и членство в ASP.NET. Все работает нормально, но помните, что функциональность не работает вообще. Я перечисляю все детали работы. Надеюсь, вы, ребята, можете помочь мне решить эту проблему.
Мне просто нужно это:
Мне нужно, чтобы пользователь заходил в веб-приложение. Во время входа в систему они могут либо войти в систему, либо запомнить меня или без нее. Если пользователь входит в систему, помните меня, я хочу, чтобы браузер помнил их в течение длительного времени, пусть, по крайней мере, один год или значительно долгое время. Как они это делают на www.dotnetspider.com, www.codeproject.com, www.daniweb.com и многих других сайтах. Если пользователь входит в систему, не помни меня, браузер должен разрешить доступ к веб-сайту в течение примерно 20-30 минут, после чего срок их действия должен истечь. Их сеанс также должен истекать, когда пользователь входит в систему и отключает браузер без выхода из системы.
Примечание. Я успешно реализовал выше функциональность без использования стандартных ролей и членства asp.net, создав свои собственные талбы для пользователя и аутентифицировав свою таблицу базы данных, установив cookie и сеансы в других моих проектах. Но для этого проекта мы с самого начала использовали стандартные роли и членство asp.net. Мы думали, что это сработает, и после того, как все было построено во время тестирования, это просто не сработало. и теперь мы не можем заменить существующую функциональность стандартными ролями asp.net и членством с моими собственными пользовательскими таблицами и всем этим, вы понимаете, о чем я говорю.
Либо есть какая-то ошибка со стандартными ролями asp.net и функциональностью членства, либо у меня есть целая концепция стандартных ролей и членства asp.net неправильно. я сказал, что хочу выше. Я считаю это очень простым и разумным.
Что я сделал
- Форма входа с именем пользователя, паролем и именем меня.
- Моя настройка в web.config:
< аутентификационный режим = "Формы" >
< forms loginUrl = "~/Account/LogOn" timeout = "2880" / >
</аутентификации > -
в My Control action, у меня есть это:
FormsAuth.SignIn(имя_пользователя, помнитеMe);
public void SignIn (строка userName, bool createPersistentCookie) { FormsAuthentication.SetAuthCookie(имя_пользователя, 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
Я думаю, это проблема многих пользователей. Как видно из сообщения в блоге, сделанного г-ном Скоттом Гу.
Ваша помощь будет действительно оценена. Спасибо заранее.