2014-11-21 3 views
0

Я пытаюсь проверить пользователя против таблицы aspnet_Membership, которая создается инфраструктурой сущности asp.net MVC 5. Поскольку большинство из вас знает, что у него есть хеш-пароль.Подтвердить пользователя от aspnet_Membership от Delphi

Я думаю, что я нашел ссылку на C# ASP.NET Identity default Password Hasher, how does it work and is it secure?

Любая идея, как проверить с Delphi? Благодаря.

+0

Я бы не стал делать это прямо с уровня доступа к данным. вместо этого я бы добавил, что пользовательский метод C# WebApi Server, созданный вами, для вызова официального кода. Вы не можете предсказать, какие изменения повлияют на логику членства C# в будущем. Плохая идея - развернуть то, что в будущем будет гарантировано изменяться. Услуги аутентификации Asp.Net быстро развиваются. –

ответ

1

Наконец-то я смог получить это сделать с помощью моего коллеги и этой ссылке любезно Malcolm Суэйн в 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; 
-1

Я использую Delphi XE8. В этом примере появилась ошибка: [dcc32 Fatal Error] Unit1.pas (7): F2613 Единица 'DECHash' не найдена. Где я могу найти этот аппарат? Google ничего об этом не знает.

Смежные вопросы