Lumen генерирует токен без проверки имени пользователя и пароля

Я пытаюсь сгенерировать токен, проверяя другие поля и таблицу, а не адрес электронной почты и пароль пользовательской таблицы. Я использую библиотеку tymon jwt.

У меня есть три поля, которые необходимо проверить для аутентификации пользователя

 table::where(["id"=>"1","mobile"=>"123","otp"=>"asdf"])->get();

Итак, если я нашел строки, соответствующие этому условию в таблице, я хочу аутентифицировать пользователя и сгенерировать действительный токен с необходимыми утверждениями.

Что я пробовал до сих пор:

//after check for three fields in DB. If row matches then, $id and $contact are variable from DB.
$customClaims = ['id' => $id, 'mobile' => $contact];

$payload = JWTFactory::make($customClaims);

При попытке это получил JWT payload does not contain the required claims.

Итак, как аутентифицировать пользователя с тремя полями и сгенерировать действительный токен с необходимыми утверждениями и $customClaims.

Отредактировано

 public function verifyOTP(Request $request) {
    $otp = $request->otp;
    $schoolid = $request->schoolid;
    $parent_contact = $request->contactNum;
    $verifyOTP = OTP::where(['schoolid' => $schoolid, 'parent_numb' => $parent_contact, 'otp' => $otp])->get();
    if ($verifyOTP) {

        $customClaims = ['schoolid' => $schoolid, 'parent_numb' => $parent_contact];

        $payload = JWTFactory::make($customClaims);

        $token = JWTAuth::encode($payload);
        return $token;
    }
}

Можете ли вы поделиться всем связанным кодом?

Niklesh Raut 18.04.2018 05:20

@ C2486 см. Полный код в отредактированном разделе.

user254153 18.04.2018 16:28

Вы ищете \Tymon\JWTAuth\Facades\JWTAuth::fromUser($user, $customClaims = []), где $user - это какой-то объект с доступным полем id. Ошибка, которую вы здесь получили, заключается в том, что данные утверждения не содержат обязательных - 'iss', 'iat', 'exp', 'nbf', 'sub', 'jti'. Вы можете заполнить их вручную или воспользоваться данным способом.

Giedrius Kiršys 20.04.2018 17:22

@ GiedriusKiršys, почему бы тебе не написать ответ, если ты знаешь решение?

jps 23.04.2018 13:41
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Laravel Scout - это популярный пакет, который предоставляет простой и удобный способ добавить полнотекстовый поиск в ваше приложение Laravel. Он...
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
9
4
1 107
1

Ответы 1

В этом случае Склеп станет настолько удобным, что я не знаю, хотите ли вы выполнить аутентификацию позже. Crypt поможет вам зашифровать и расшифровать.

Сделайте трейт или любой другой класс, вам не нужно сильно беспокоиться о шифровании и расшифровке, Crypt может позаботиться. Я построил Mobile API, используя Склеп

Зашифровать: Crypt :: encrypt ($ value);

Расшифровать: Crypt :: decrypt ($ значение);

Более подробная информация: https://laravel.com/docs/5.2/encryption

шифрование и дешифрование - это не только то, чем занимается JWT. JWT необходимо пройти аутентификацию на основе этих полей, а также проверить секретный ключ сервера.

user254153 15.04.2018 16:57

Да. Как и в случае с разумным шифрованием, расшифровка и время жизни зависит от того, как вы хотите обрабатывать. Зависит от того, как вы это создаете или как вы это проектируете.

Gabriel 15.04.2018 17:37

Это вообще ответ на поставленный выше вопрос? Как это решает проблему отсутствия заявлений в JWT?

jps 25.04.2018 10:58

Другие вопросы по теме