2016-03-04 2 views
2

Когда речь идет о доступе мой логин У меня есть эта ошибка:Войти терпят неудачу в Laravel 5 (JTW)

{"error":"token_not_provided"} 

есть в моей .htaccess:

RewriteEngine On 
RewriteCond %{HTTP:Authorization} . 
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] 

У меня есть в моих маршрутах. PHP:

Route::post('/api/login', '[email protected]'); 
Route::get('/api/login', '[email protected]'); 

и у меня AuthenticateController:

use JWTAuth; 
use Tymon\JWTAuth\Exceptions\JWTException; 

class AuthenticateController extends Controller 
{ 
    public function authenticate(Request $request) 
    { 
     // grab credentials from the request 
     $credentials = $request->only('email', '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'], 401); 
      } 
     } catch (JWTException $e) { 
      // something went wrong whilst attempting to encode the token 
      return response()->json(['error' => 'could_not_create_token'], 500); 
     } 

     // all good so return the token 
     return response()->json(compact('token')); 
    } 

Вы можете мне помочь? большое вам спасибо

+0

Вы можете увидеть заголовки ваш браузер посылает, и есть что-то вроде: 'Авторизация: Bearer' + длинного ключа? –

+0

Помогает ли это http://stackoverflow.com/questions/33101810/getting-token-not-provided-when-using-authorization-header-with-jwt-laravel – haakym

ответ

1

Вы должны гарантировать Ваше мнение имеет: {!! csrf_field() !!}, и вам не нужно иметь его как скрытое поле в форме.

<form class="form-horizontal" method="post"> 
 

 
    @foreach ($errors->all() as $error) 
 
    <p class="alert alert-danger">{{ $error }}</p> 
 
    @endforeach 
 
    
 
    {!! csrf_field() !!} 
 

 
    <fieldset>

+0

спасибо, что вам удалось исправить ошибку, добавив: Route :: group (['middleware' => ['jwt.auth', 'jwt.refresh']], function() { \t Route :: post ('logout', 'Api \ AuthController @ logout'); \t Route :: Get ('тест', функция() { \t \t обратный ответ() -> JSON ([ 'Foo' => 'бар']); \t}), и в рамках этой функции все функции которые упоминают логин. Еще раз спасибо – Lucia

1

На каком ваше? Я думаю, вам нужно включить что-то на свой клинок.

<input type="hidden" name="_token" value="{{ csrf_token() }}"> 

Если вы не используете представление, и вы делаете это с внешнего запроса. Тогда вы можете просто отключить csrf_token()

Вот ссылка How to disable Middlware CSRF in Laravel

Смежные вопросы