API принудительный вход в систему Laravel - PullRequest
0 голосов
/ 05 ноября 2018

Я разрабатываю API для правительственного агентства, им требовались некоторые условия, такие как:

Базовая аутентификация с использованием хэша:

$pass = 'password';
$hash_pass = sha256($pass.date('Y-m-d'));
$full_hash = base_64('username'.':'.$hash_pass);

Итак, они отправляют мне заголовок authorizarion вроде:

Basic $ full_hash

На моем промежуточном программном обеспечении я использую это:

public function handle($request, Closure $next)
{
    $authorization_code = explode(" ", $request->header('Authorization'));

    $hash = base64_decode($authorization_code[1]);
    $user = explode(":", $hash);

    $data['username'] = $user[0];

    $user_db = User::where('username', $data['username'])->first();

    $data['password'] = $user[1];

    $today = date('Y-m-d');


    $request->headers->set('php-auth-user', $data['username']);
    $request->headers->set('php-auth-pw', $data['password']);

    return $response = auth()->basic('username') ?: $next($request);
}

В моей базе данных пароль был зашифрован с помощью bcrypt.

Мой вопрос: есть ли способ принудительного входа в систему? с моей собственной логикой?

Если я не шифрую пароль в базе данных, я могу сравнить $ data ['password'] с $ user_db-> password, используя:

        if($data['password'] == hash("sha256", $user_db->password.$today, false))

Хорошо .. Спасибо всем!

Ответы [ 2 ]

0 голосов
/ 06 ноября 2018

Я не знаю, правильно ли я поступаю ..

Но я «решил» это, оставив необработанный пароль в базе данных и сравнив его так:

if($data['password'] == hash("sha256", $user_db->password.$today, false)){

     \Auth::login($user_db);

}
0 голосов
/ 05 ноября 2018

Вы определенно не должны хранить пароль в виде открытого текста в вашей базе данных.

Вам следует создать таблицу ключей API, где ключ API принадлежит пользователю, и использовать ее для аутентификации. Затем вы можете отозвать, контролировать и т. Д. Использование каждого ключа.

Но не храните пароль в виде открытого текста в вашей базе данных. Ever!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...