我正在使用 ASP.Net 登录控件登录 Web 应用程序。当用户提交表单时,我想在 ASP.Net 发送信息进行身份验证之前调用一个函数来加密密码。
我尝试在密码字段上添加客户验证器,如果密码不为空,则 Password.Text 将替换为加密值。但是,似乎 ASP.Net 仍然发送原始密码进行身份验证。
我还尝试在登录按钮上添加一个 onClick 事件来加密密码,但 ASP.Net 仍然发送原始密码进行身份验证。
有没有办法做到这一点?谢谢!
更新:
很抱歉没有说清楚。我需要的是在服务器端加密密码。
我在注册用户时没有使用 ASP.Net Membership 来加密或散列密码。 passwordFormat 属性已设置为“清除”。
我正在做的是:
- 当新用户注册时,我使用自定义函数来加密密码并将其保存到数据库中。
- 当用户尝试登录时,我想使用相同的函数对用户输入的密码进行加密,让 ASP.Net 对用户进行身份验证。
我遇到的问题是我找不到在 ASP.Net 启动身份验证过程之前调用加密函数的方法。
希望这是有道理的。谢谢。
艾伦
最佳答案
添加 OnClick 事件绝对是正确的。如果您尝试在客户端进行加密,那么您将需要改用 OnClientClick 事件(OnClick 发生在服务器端,而 OnClientClick 发生在客户端)。我最初假设您使用它来调用执行加密的客户端 javascript 函数?
[编辑]
但是,如果您在服务器端进行加密并使用登录控件,那么您可能希望使用 OnAuthenticate 事件:
<asp:Login id="Login1" runat="server" OnAuthenticate="OnAuthenticate">
</asp:Login>
然后在这里进行加密:
private void OnAuthenticate(object sender, AuthenticateEventArgs e) {
bool authenticated = false;
String encryptedPassword = Encrypt(Login1.Password);
authenticated = YourAuthenticationMethod(Login1.UserName, encryptedPassword );
e.Authenticated = authenticated;
}
private bool YourAuthenticationMethod(String username, String encryptedPassword) {
//test the encrypted password against that retrieved from your database using the username
}
关于c# - ASP.Net - 如何在使用登录控件登录前加密密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6001127/