在.NET 2.0中使用"记住我"功能进行身份验证
我的客户希望我在用户登录时启用"记住我"复选框。我正在加密用户名和密码并将其存储在Cookie中。
但是,当处于密码模式时,我们无法写入文本框。
我已经看过很多次了,那么他们如何做呢?
提前致谢!
解决方案
我们可以完全绕过表单并直接在登录页面上检查Cookie的内容,而不是将文本插入登录表单中,该怎么办?减少了用户的工作量,这将使其更加无缝。
我们可以设置cookie的有效期为2周,以保持用户登录状态。这就是ASP.NET身份验证与持久身份验证一起工作的方式。切记在每个请求上更新到期时间。
Page_Load( ...) { ... process cookie ... if (cookie is good) Response.Redirect("content.aspx"); }
只要记住在重定向之前关闭并处理任何数据库活动即可。
他们不希望用户自动登录,而只是希望用户名和密码字段预先填写。
我知道这很愚蠢,与让我们保持登录状态相同,但这是他们的要求。
我已经提到这不是最佳的安全实践,但他们不在乎。
像myspace这样的网站都可以使用它,如果我们转到myspace.com,则用户名和密码为
已经填写。
我不记得有任何网页做过我们所描述的那样的事情,但是我认为这是网络浏览器自动填充密码的过程。我知道这不是一个好的解决方案,但是我们可以做的是,如果有Cookie可以验证用户身份,则可以在普通登录框中使用星号或者类似的文字设置文本,或者在其他登录页面中设置类似的名称。无论如何,我们无需使用文本框中的密码来验证用户身份。
如果服务器端代码可以通过cookie访问其用户名和密码,那么页面就不能像这样填充表单字段的value属性:
<input type="text" name="username" value="<%=decryptedUsername%>" /> <input type="password" value="<%=decryptedPassword%>" />
当然,这是非常不安全的,因为我们正在以纯文本形式回显用户密码(这是很大的禁止)。但是正如我们所说的,客户并不担心安全隐患。如果它们是SSL,则可以帮助减轻这种风险。
Thatz非常简单,请尝试使用:
txtPass.Attributes [" value"] =" 123456"; (最有可能在页面加载事件处理程序上)
其中txtPass是密码文本框的ID(在密码模式下)。我们想要显示的密码是123456.
文本框是否可以更改类型?如果是这样,可以将文本框设置为普通和隐藏状态,然后在其中放置密码,然后将文本框类型更改为密码类型,然后取消隐藏...