Как получить элемент управления входом asp.net для автоматической аутентификации ранее аутентифицированного пользователя? - PullRequest
3 голосов
/ 03 октября 2008

Я пытаюсь настроить контроль входа в систему, чтобы запомнить учетные данные пользователя, который ранее успешно ввел свое имя пользователя и пароль. Я установил свойство Запомнить меня в true, но, похоже, оно не вызывает события, когда я мог прочитать cookie и автоматически войти в систему пользователя.

Существует ли простой механизм для достижения этой цели?

1 Ответ

5 голосов
/ 03 октября 2008

Вам нужно Google для проверки подлинности с помощью форм в ASP.NET 2.0

Вам потребуется настроить приложение (через web.config), а также может потребоваться изменить настройки IIS. Хотя все это довольно просто, есть куча настроек, которые можно использовать, поэтому лучше всего прочитать некоторые статьи. ScottGu имеет запись в блоге , в которой много деталей.

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

try Как: создать страницу входа в ASP.NET и Пошаговое руководство. Создание веб-сайта с членством и именем пользователя . Насколько я помню, вам все равно придется выполнять аутентификацию самостоятельно, если только вы не используете поставщика Sql Server Membership. В этом случае вам все еще нужно настроить базу данных и web.config.


По сути, после правильной настройки конфигурации у вас появляется страница входа. На этой странице входа вы сообщаете Forms Authentication для создания билета аутентификации для вас один раз , вы аутентифицируете их:

if (VerifyUser(name, password) ) // this is not a framework method
    FormsAuthentication.RedirectFromLoginPage(
        userName, false); // no persistent cookie

Если вы хотите прочитать данные билета аутентификации (откуда угодно).

// output just writes to a StringBuilder 'sb' 
output(sb, "Identity.AuthenticationType", Page.User.Identity.AuthenticationType);

FormsIdentity fi = Page.User.Identity as FormsIdentity;
if (fi == null)
{
    output(sb, "Identity Type", Page.User.Identity.ToString());
    return;
}

output(sb, "FormsIdentity.Ticket.IssueDate", fi.Ticket.IssueDate);
output(sb, "FormsIdentity.Ticket.Expiration", fi.Ticket.Expiration);
output(sb, "FormsIdentity.Ticket.Name", fi.Ticket.Name);
output(sb, "FormsIdentity.Ticket.CookiePath", fi.Ticket.CookiePath);
output(sb, "FormsIdentity.Ticket.UserData", fi.Ticket.UserData);
output(sb, "FormsIdentity.Ticket.Version", fi.Ticket.Version);
output(sb, "FormsIdentity.Ticket.IsPersistent", fi.Ticket.IsPersistent);

Суть в том, что после аутентификации asp.net будет перенаправлять пользователя на страницу входа только в том случае, если срок действия билета аутентификации истек, а пользователь находится на защищенной странице. Asp.net не просит вас аутентифицировать пользователя без необходимости.

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