Как добавить заголовок авторизации в Laravel 5.8 - PullRequest
1 голос
/ 17 апреля 2019

Я бы хотел добавить Authorization: Bearer {yourtokenhere} в мой Laravel. Если в Почтальон Я помещаю Авторизацию на вкладку Заголовки и даю значение токена вручную, написав Bearer {token}, чтобы я мог защитить определенный маршрут, но как это сделать в исходном коде Laravel? Что мне делать в контроллере или добавить другой метод в Middleware, Kernel или где-то еще? Это потому, что я получаю {"error":"token_not_provided"} каждый доступ к маршруту, который защищен с помощью jwt.auth middleware.

Это мой защищенный маршрут, который дает мне {"error":"token_not_provided"}:

Route::group(['middleware' => ['jwt.auth']], function(){
    Route::get('/dashboard', 'AppController@dashboard');
});

И это мой метод входа в AuthController:

  public function signin(Request $request)
  {
    $this->validate($request, [
      'username' => 'required',
      'password' => 'required'
    ]);
    // grab credentials from the request
    $credentials = $request->only('username', 'password');
    try {
        // attempt to verify the credentials and create a token for the user
        if (! $token = JWTAuth::attempt($credentials)) {
            return response()->json([
              'error' => 'Invalid Credentials, username and password dismatches. Or username may not registered.',
              'status' => '401'
            ], 401);
        }
    } catch (JWTException $e) {
        // something went wrong whilst attempting to encode the token
        return response()->json(['error' => 'could_not_create_token'], 500);
    }

    return response()->json([
      'user_id' => $request->user()->id,
      'token'   => $token
    ]);
  }

1 Ответ

0 голосов
/ 17 апреля 2019

Вы можете установить это как

$request = Request::create(route('abc', 'GET'); $request->headers->set('X-Authorization', 'xxxxx');

для получения дополнительной информации вы можете следить за ответом stackoverflow Как установить заголовки для перенаправленного запроса

если вы используете jwt, вы можете даже передать свой токен в URL как www.example.com/post?token=kjdhfkjsffghrueih

и, как вы сказали, вам нужно это в AuthAcontroller, тогда вы должны установить это на стороне клиента. сначала сохраните этот токен в localalstorage и установите для этого токена http-вызов (я полагаю, через ajax или axios) из localalstorage, а затем отправьте запрос laravel.

для доступа в ajax-звонке вы можете использовать код ниже

headerParams = {'Authorization':'bearer t-7614f875-8423-4f20-a674-d7cf3096290e'}; //token form localstorage

, а затем используйте его в Ajax, как

type: 'get', url: 'https://api.sandbox.slcedu.org/api/rest/v1/students/test1', headers: headerParams,

или если вы используете axios, вы можете установить это с помощью

axios.defaults.headers.common['Authorization'] = 'Bearer ' + localStorage.getItem('SecurityKey');

...