Treceți token-ul unui controler AngularJs la un API Laravel

voturi
4

Am încercat să treacă jetonul pe care o am în controler meu Java Script pentru a te autentifica la un API în Laravel. Din antetele de controler, am defini un „“ autorizație „:“ Purtător „+ $ scope.token„, care urmează să fie trimise la API Dar, din păcate am acest mesaj de eroare.:

Token_not_provided

Traseu:

Route::get('/members', 'PessoaController@index')->middleware('jwt.auth');

Sunt folosesc JWTAuth.

Controler API-ul meu:

use Illuminate\Support\Facades\Validator;
use Illuminate\Http\Request;
use App\User;
use Illuminate\Support\Facades\DB;
use App\Http\Requests\PessoaRequest;
use Tymon\JWTAuth\Exceptions\JWTException;
use Tymon\JWTAuth\Facades\JWTAuth;

class PessoaController extends Controller
{

protected $user;

    public function __construct(\Illuminate\Http\Request $request)
{
    $header = $request->header('Authorization');

    return response([
        'status' => 'success'
    ]) ->header('Authorization', $header);
}

Controler unghiulară:

(function() {
 app.controller('MemberController', [
'$scope', '$rootScope', 'AppConfig', '$http',
function($scope, $rootScope, AppConfig, $http) {
  var vm = this;
  $rootScope.page.title = 'SEC BASE';

  $rootScope.authenticated = true;
  $scope.token = $rootScope.user.remember_token;
   getMembers();

    // Obtem a listagem de todos os usuarios
  function getMembers() {
      Loading.show();
    $http({
        headers: {
            'Content-Type' : 'application/json',
            'Authorization' : 'Bearer ' + token
        },
        method: 'GET',
        url: AppConfig.ApiUrl + 'members'
    }).then( response => {
      // console.log(response);
      $scope.members = response.data;
    }).finally(Loading.hide)
        .catch(function(err) {
            console.log(err);
        });
  }
  }
  ]);
})();

Handler.php:

use Exception;
use Illuminate\Auth\Access\AuthorizationException;
use Illuminate\Auth\AuthenticationException;
use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler;
use Tymon\JWTAuth\Facades\JWTAuth;
public function render($request, Exception $exception)
{
    // detect instance
    try {
        $user = JWTAuth::parseToken()->authenticate();
    } catch (Exception $e) {
        if ($e instanceof \Tymon\JWTAuth\Exceptions\TokenInvalidException){
            return $this->respondWithError(Token is Invalid);
        }else if ($e instanceof \Tymon\JWTAuth\Exceptions\TokenExpiredException){
            return $this->respondWithError(['error'=>'Token is Expired']);
        }else{
            return $this->respondWithError(['error'=>'Something is wrong']);
        }
    }
    return $next($request);
}

Eroare de întoarcere:

introduceți

Întrebat 20/10/2018 la 13:03
sursa de către utilizator
În alte limbi...                            


2 răspunsuri

voturi
0

Modul în care a construi cererea arată bine. Se pare ca eroarea vine de la serverul API care nu primește token-ul.

Dacă rulați aplicația PHP folosind Apache, atunci ar trebui să aibă o privire la această întrebare și răspunsul acceptat .

Apache nu servește în mod corect antetul autorizației pentru aplicațiile. O regulă dedicată trebuie să fie stabilite în tine .htaccess pentru a-l obține.

Publicat 29/10/2018 la 07:29
sursa de către utilizator

voturi
0

Dacă Purtător nu funcționează atunci va trebui să trimită jeton cu date parametru

Nu în antetele. De asemenea, am confruntat cu această problemă și fixată prin trimiterea jeton cu parametrul corpului.

Încercați să trimiteți cu parametrii de corp.

În cazul în care acest lucru doesnt apoi, de asemenea, verificați cu schimbarea codului middleware

aici este 1 linie trebuie să schimbați

public function handle($request, Closure $next)
{
    try{
        $user = JWTAuth::toUser($request->input('token'));
        // this will get token from body parameter
Publicat 30/10/2018 la 13:11
sursa de către utilizator

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more