2017-01-23 12 views
0

Laravel 사용 5.3 자체 API를 사용하는 웹 앱을 설정했습니다. Passport에 의해 인증이 성공적으로 처리되었습니다. 웹 애플리케이션은 경로에 인증 미들웨어를 사용하고 인증을 위해 모델 정책을 사용합니다. API 라우팅은 기본 'auth : api'토큰 가드를 사용하여 액세스를 제어합니다.권한 정책/게이트 for Laravel 5.3 웹 앱에서 자체 API를 사용하는 Passport

웹 인증뿐만 아니라 API 승인을 위해 app/Policies에서 동일한 정책을 사용하고 싶습니다. 그러나 어떻게 이해가되지 않습니다. $this->authorize('view', $model)과 같은 전화는 작동하지 않습니다. 나는 Auth::guard('api')->user()에서 어떻게 든 사용자에게 패스해야 할 것 같아요?

도움이 될 것입니다.

업데이트 : 제대로 작동하고 있습니다.

API 호출에 대해서도 Laravel이 웹 가드의 사용자를 정책을 확인하는 데 사용하고있는 것처럼 보입니다. 이 사용자는 API 호출에 대해 정의되지 않았습니다. 그래서 나는 모든 API 호출이 API 가드를 사용해야한다는 Laravel에게 알릴 필요가있었습니다.

  1. 핸들 기능에 Auth::shouldUse('api');으로 새 미들웨어를 만듭니다.
  2. 커널의 API 섹션에 미들웨어를 할당하십시오.

이제 Laravel은 모든 API 요청에 대해 API 가드를 사용합니다. $this->authorize('view', $model)과 같은 전화는 웹과 API 모두에서 작동합니다.

답변

0

업데이트 : 제대로 작동하고 있습니다.

API 호출에 대해서도 Laravel이 웹 가드의 사용자를 정책을 확인하는 데 사용하고있는 것처럼 보입니다. 이 사용자는 API 호출에 대해 정의되지 않았습니다. 그래서 나는 모든 API 호출이 API 가드를 사용해야한다는 Laravel에게 알릴 필요가있었습니다.

핸들 기능에 Auth::shouldUse('api');으로 새 미들웨어를 만듭니다. 커널의 API 섹션에 미들웨어를 할당하십시오. Laravel은 이제 모든 API 요청에 API 가드를 사용합니다. $this->authorize('view', $model)과 같은 전화는 웹과 API 모두에서 작동합니다.

+0

와 경로에 대한 auth:api 미들웨어를 사용합니까? 귀하의 지시를 따르고 여권 및 모델 정책에 여전히 문제가 있습니다. – ganicus

+0

죄송합니다. 내 프로젝트가 보류 중이지만 다음 몇 달 안에 laravel 5.5로 마이그레이션되어 게시됩니다. 인증에 대한 변경 사항이 수반 될지 확실하지 않은 경우 5.4/5.5에 대한 더 나은 예제가있는 상용구 또는 패키지가있을 수 있습니다. – user1954085

+0

나는 여기에도 같은 문제가 있으며 새로운 설치로도 작동하지 않습니다. 정책은 심지어 호출되지 않습니다. – Erin

0

그냥 정책

당신은 어디에서든지 당신을 당신의 repo 대중이 일이없는