我银行的网站有2个网上银行登录页面。在第一页上,我输入了我的用户名。如果我没有输入有效的用户名,我会收到一条错误消息,但是没有进入第二页。第二页显示基于我的用户名的图片,让我输入我的密码。如果我在输入用户名后手动输入网站内页面的URL,但在输入密码之前,我会被重定向回第一个登录页面。
有没有一种很好的方法在ASP.NET中使用Forms身份验证实现它?我只在web.config中获得1个loginUrl。
我相当肯定我的银行使用Java。
答案 0 :(得分:0)
我没有发现这个好主意,因为这样任何攻击者都知道用户名是否正确,那么就需要知道密码。
第二个原因是更复杂,您需要确保在登录的路上不会忘记某些内容。
第三个原因是不是常用的登录方式,因此人们没有使用它。
如果你想做同样的事情,你需要2页,首先你问用户名,然后你在本地数据库上搜索,如果这是一个有效的用户,那么你保留这个您在第二页上发送的变量的用户名,即实际登录名。 在第二页上,您有一个常见的asp.net登录模块,但您已隐藏了用户名,同时您已使用上一页中的值进行设置。其余的由你决定。
答案 1 :(得分:0)
如果您使用内置的AspNetSqlMembershipProvider
提供程序,您可以自己实现此功能,您可以自定义内置登录控件并覆盖OnLoggingIn
方法。然后,您可以执行在该登录时检查所需的内容并将其移至另一页。在下一页上,您可以使用相同的方式覆盖其他方法:OnAuthenticate
和OnLoggedIn
,同时仍然使用内置控件(但可以根据需要自定义)。然后,您可以将web.config中的登录页面设置为第一个登录页面。您也可以看到MSDN其他方法。
现在已经指出这不太理想,因为它不典型,大多数用户不会理解发生的事情或者认为它是片状的(就像我对银行所做的那样)。更不用说你将需要进行额外的检查,类似于银行的做法,以确保一切都是合法的来自客户。所以最后我不会推荐它,主要是给最终用户带来麻烦。