c# - ASP.Net - 如何在使用登录控件登录前加密密码

标签 c# asp.net

我正在使用 ASP.Net 登录控件登录 Web 应用程序。当用户提交表单时,我想在 ASP.Net 发送信息进行身份验证之前调用一个函数来加密密码。

我尝试在密码字段上添加客户验证器,如果密码不为空,则 Password.Text 将替换为加密值。但是,似乎 ASP.Net 仍然发送原始密码进行身份验证。

我还尝试在登录按钮上添加一个 onClick 事件来加密密码,但 ASP.Net 仍然发送原始密码进行身份验证。

有没有办法做到这一点?谢谢!

更新:

很抱歉没有说清楚。我需要的是在服务器端加密密码。

我在注册用户时没有使用 ASP.Net Membership 来加密或散列密码。 passwordFormat 属性已设置为“清除”。

我正在做的是:

  1. 当新用户注册时,我使用自定义函数来加密密码并将其保存到数据库中。
  2. 当用户尝试登录时,我想使用相同的函数对用户输入的密码进行加密,让 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/

相关文章:

c# - 析构函数永远不会被调用

c# - 模拟office365 API以使用单个帐户执行日历相关操作

c# - DCOM 配置中缺少 Microsoft Excel 应用程序条目

asp.net - 在没有 ViewState ASP.Net 的情况下获取当前页面的 HTML

asp.net - 你如何在本地主机上使用 https/SSL?

c# - 如何为我的应用程序构建搜索机制?

javascript - 比较鼠标悬停时的 URL 以使用 javascript 显示下拉菜单

c# - 从任何文件夹中删除所有文件

c# - 我怎样才能找到以前表格的表格名称?

javascript - 在 ASP.NET MVC 4 中调用 JSON 文件