如何获取asp.net登录控件以自动验证以前通过身份验证的用户?

时间:2020-03-06 15:03:29  来源:igfitidea点击:

我试图设置登录控件,以记住先前已成功输入用户名和密码的用户的登录凭据。我将"记住我"属性设置为true,但似乎没有触发任何我可以读取Cookie并自动登录用户的事件。

是否有一个简单的机制可以实现这一目标?

解决方案

我们需要在ASP.NET 2.0中使用Google进行表单身份验证

我们将需要设置应用程序(通过web.config),还可能需要更改IIS设置。尽管一切都非常简单,但仍有很多可用的设置,因此最好阅读一些文章。 ScottGu有一个
博客条目,其中有很多详细信息。

在www.asp.net上也有很多不错的视频,包括这些安全教程。

尝试如何:创建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不会一直要求我们对用户进行身份验证。