【问题标题】:Validate user against aspnet_Membership from Delphi根据 Delphi 的 aspnet_Membership 验证用户
【发布时间】:2015-01-19 18:28:54
【问题描述】:

我正在尝试针对由 asp.net MVC 5 entity framework 创建的表 aspnet_Membership 验证用户。大多数人都知道它有哈希密码。

我想我找到了 C# 的链接 ASP.NET Identity default Password Hasher, how does it work and is it secure?

知道如何从 Delphi 进行验证吗?谢谢。

【问题讨论】:

  • 我不会尝试直接从数据访问层执行此操作。相反,我会添加一个由您自定义构建的 C# WebApi Server 方法来调用官方代码。您无法预测未来 C# Membership 逻辑会发生哪些变化。部署一些保证将来会改变的东西是个坏主意。 Asp.Net 身份验证服务正在迅速发展。

标签: delphi


【解决方案1】:

最后,我在同事的帮助下完成了这项工作,此链接由 Malcolm Swaine 提供 http://www.codeproject.com/Articles/32600/Manually-validating-an-ASP-NET-user-account-with-a

这是最终的代码。

uses  DECHash,Data.Cloud.CloudAPI;
...
..
function GetHash_ASPNetMemberShip(const Password, Salt:string):string;
var
  bPassword ,bSalt ,bSaltPassword: TBytes;
begin
   bPassword:= TEncoding.Unicode.GetBytes(Password)  ;
   bSalt:= DecodeBytes64(Salt);
   SetLength(bSaltPassword, length(bPassword)+length(bSalt));
   Move(bSalt[0],bSaltPassword[0],length(bSalt));
  Move(bPassword[0],bSaltPassword[length(bSalt)],length(bPassword));
  Result := THash_SHA1.CalcBuffer(bSaltPassword[0],  Length(bSaltPassword), TFormat_MIME64);
end;

【讨论】:

    【解决方案2】:

    我使用 Delphi XE8。尝试这个例子得到了错误: [dcc32 致命错误] Unit1.pas(7):未找到 F2613 单元“DECHash”。 我在哪里可以找到这个单位? Google 对此一无所知。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多