Bir laravel API bir angularjs kontrolörün belirteci geçirin

oy
4

Ben laravel bir API ile kimlik doğrulaması için benim Java Script denetleyicisi var belirteci geçmesine çalışıyorum. Benim kumandanın başlıklarına bakıldığında, bir '' Yetkilendirme 'define:' Hamiline '+ $ scope.token API gönderilmek üzere Ama ne yazık ki bu sorunu yaşamaya devam ediyorum.:

Token_not_provided

Rota:

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

Ben JWTAuth kullanacağım.

Benim Kontrolör API:

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);
}

Eğik Denetleyici:

(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);
}

Hata dönüş:

Burada

Oluştur 20/10/2018 saat 14:03
kaynak kullanıcı
Diğer dillerde...                            


2 cevaplar

oy
0

Hamiline sonra çalışmıyorsa parametre verileri ile belirteci göndermek zorunda

Değil başlıklardaki. Ben de bu sorunu karşılaştığı ve vücut parametresi ile belirteci göndererek sabit.

Vücut parametreleri ile göndermek için deneyin.

Bu doesnt work sonra da katman kodu değiştirmeden kontrol edersem

Burada değiştirmeniz gereken 1 çizgidir

public function handle($request, Closure $next)
{
    try{
        $user = JWTAuth::toUser($request->input('token'));
        // this will get token from body parameter
Cevap 30/10/2018 saat 15:11
kaynak kullanıcı

oy
0

İsteği oluşturmak yolu iyi görünüyor. Hata belirteci almaz API sunucusundan gelip gibi görünüyor.

Apache kullanıyorsanız PHP uygulaması çalıştırıyorsanız, o zaman bir göz olmalıdır bu soruya ve kabul edilen cevabını .

Apache doğru uygulamalara yetkilendirme başlığı vermektedir etmez. Bunu almak için .htaccess içinde Özel bir kural ayarlamak gerekir.

Cevap 29/10/2018 saat 09:29
kaynak kullanıcı

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