![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Доброго времени суток!
Имеется написанный FTP сервер, но нужно к нему прикрутить систему авторизации для нескольких клиентов (в данный момент только один): Код:
procedure TFTPServer.IdFTPServer1UserLogin(ASender: TIdFTPServerThread; const AUsername, APassword: string; var AAuthenticated: Boolean); begin AAuthenticated:=(AUsername='admin') and (APassword='password'); if not AAuthenticated then Exit; ASender.HomeDir:='/'; ASender.currentdir:='/'; end; |
#2
|
|||
|
|||
![]() Цитата:
Можно. Сделай внешний файл, например, пары имя=пароль. Дальше в этой процедуре подгружаешь этот файл и проверяешь переданные login и password против него. Например, есть файл ftp.txt: Код:
admin=password1 user=password2 тогда код будет как-то так: Код:
function TFTPServer.AuthUser(ALogin, APassword : String) : Boolean; var S : TStringList; begin S := TStringList.Create; Try Try S.LoadFromFile(ExtractFilePAth(ParamStr(0)) + 'ftp.txt'); Result := S.Values[ALogin] = APassword; Finally S.Free; End; Except Result := False; end; Вынес проверку в отдельную процедуру, т.к. может потребоваться доп. функционал, типа проверки логина без учета регистра, да и хранить пароли - не айс, хранить надо хэши паролей, соотв, из пароля надо сделать хэш перед сравнением. |