Паспорт / Axios не размещать имя пользователя пароль - PullRequest
0 голосов
/ 18 октября 2019

Я пытаюсь POST имя пользователя, пароль auth для Laravel / Passport, но он всегда возвращает null

axios.post('http://localhost:8000/api/login', {
    withCredentials: true,
    auth: {
      email: 'agent@test.com',
      password: 'qwerty!@#$%^'
    }
  })
  .then(res => {
    console.log(res);
  })

PassportController.php

public function login(){
    if(Auth::attempt(['email' => request('email'), 'password' => request('password')])){
        $user = Auth::user();
        $success['token'] =  $user->createToken('MyApp')-> accessToken;
        return response()->json(['success' => $success], $this-> successStatus);
    }
    else{
        return response()->json(['email'=>request('email')], 401);
// I return email to see value
// return response()->json(['error'=>'Unauthorised'], 401);
    }
}

api.php

Route::post('login', 'PassportController@login');

Я проверял все много раз, чувствую, что все в порядке, но по какой-то причине данные не отправляют в паспорт.

журнал conosle:

POST http://localhost:8000/api/login 401 (Несанкционированный)

{email: null}
email: null

Ответы [ 2 ]

2 голосов
/ 18 октября 2019

Laravel, вероятно, обращается к значениям данных POST с помощью request. Вторым параметром метода axios.post является объект, отправляемый в виде данных POST, поэтому вы, вероятно, намеревались просто передать электронную почту и пароль в качестве ключей верхнего уровня:

axios
  .post(
    "http://localhost:8000/api/login",
    {
      email: "agent@test.com",
      password: "qwerty!@#$%^"
    },
    { withCredentials: true }
  )
  .then(res => {
    console.log(res);
  });

Я подозреваю, что вы можете смешивать аутентификациюв общем случае с HTTP ("Basic") аутентификацией . Клавиша auth является частью объекта config, который вы можете передать в качестве третьего параметра в axios.post, который будет управлять именно этим. Я не думаю, что это то, что вы после, но просто добавив это здесь для полноты. Обратите внимание, что базовая аутентификация принимает имя пользователя и пароль:

axios
  .post("http://localhost:8000/api/login", {}, {
      withCredentials: true,
      auth: {
          username: "agent@test.com",
          password: "qwerty!@#$%^"
      }
  })
  .then(res => {
    console.log(res);
  });
0 голосов
/ 19 октября 2019

Наконец-то я решил свою проблему, проблема не в том, чтобы отправлять credentials и auth через axios, потому что от внутреннего интерфейса laravel принимают данные поста, а не данные аутентификации, поэтому я передал email и passwordчерез данные формы, а не аутентификацию:

axios.post("http://localhost:8000/api/login", {
    email: "agent@test.com",
    password: "qwerty!@#$%^"
  })
  .then(res => {
    console.log(res);
  });

Теперь я получил токен в бэк-энде.

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