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

Posted

技术标签:

【中文标题】如何让 asp.net 登录控件自动验证以前经过身份验证的用户?【英文标题】:How to get the asp.net login control to auto authenticate a previously authenticated user? 【发布时间】:2010-09-14 23:39:56 【问题描述】:

我正在尝试设置登录控件以记住之前已成功输入用户名和密码的用户的登录凭据。我将记住我的属性设置为 true,但它似乎不会触发我可以读取 cookie 并自动登录用户的任何事件。

有没有一种简单的机制来实现这一点?

【问题讨论】:

【参考方案1】:

你需要谷歌Forms Authentication in ASP.NET 2.0

您需要设置您的应用程序(通过 web.config),并且可能还需要更改 IIS 设置。虽然这一切都非常简单,但可以使用大量设置,因此最好阅读一些文章。斯科特古有一个 blog entry 介绍了很多很好的细节。

www.asp.net 也有很多不错的视频,包括这些Security Tutorials

试试How to: Create an ASP.NET Login Page 和Walkthrough: Creating a Web Site with Membership and User Login。如果我记得,除非您使用 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 不会一直要求您对用户进行不必要的身份验证。

【讨论】:

谢谢。我已经走上了这条路——它从来没有提到“记住我”属性是如何或做什么的。叹息。 我已经为答案添加了更多链接。这比在页面上插入一些控件要复杂一些。您需要创建登录页面等。“记住我”用于创建持久身份验证 cookie。很多时候你都不想这样。 谢谢。感谢您为使我走上正确道路所做的努力。 如果添加的代码 sn-ps 没有帮助,也许您可​​以编辑您的问题并说出您遵循的步骤。很难知道你卡在哪里了。

以上是关于如何让 asp.net 登录控件自动验证以前经过身份验证的用户?的主要内容,如果未能解决你的问题,请参考以下文章

带有 Angular 6 的 Asp.Net Core 2.1 中的 Windows 身份验证 - Chrome 连续登录提示

asp.net如何让未登录用户登录后能自动跳转到登录前访问的页面?

ASP.NET Membership - 当您在同一个 WebApp 中调用 WebService 时,经过身份验证的用户会丢失

asp.net 在点击某些按键时,如何让验证控件暂时失效?

使用 ASP.NET 表单身份验证,如何让图像出现在登录屏幕上?

asp.net 用户登录控件如何使用Access数据库