모든 사용자가 액세스 할 수있는 공개 경로가 있습니다. (/timeline
).
이 작업에서 사용자가 인증되면 해당 게시물을 좋아한다면 그를 표시해야합니다.
경로가 auth:api
미들웨어 인 경우 $request->user()
을 사용하여 인증 된 사용자를 얻을 수 있지만 auth:api
미들웨어를 사용하지 않으면 사용자가 올바른 access_token을 보내더라도 사용자가 인증되었는지 확인할 수 없습니다.
미들웨어가없고 컨트롤러에서 사용자를 인증하면 access_token이 올바른지 어떻게 확인할 수 있습니까?인증없이 사용자를 인증하는 방법 : laravel 5.3의 API 미들웨어?
2
A
답변
7
가드를 메소드에 전달하여 사용자가 특정 가드에 로그인했는지 확인할 수 있습니다.
$request->user('api');
3
당신은 auth:api
을 사용하고 있으므로 JSON 요청을하고 있다고 가정합니다. 액세스 토큰은 일반적으로 귀하의 요청의 헤더에 앉아있다, 그래서 당신은 그냥 코드에서 발굴 할 시간이 없어이
public function timeline(Request $request) {
if ($request->has('access_token') || $request->header('access_token')) {
$user = Auth::guard('api')->user();
}
...
}
1
처럼 확인하실 수 있습니다,하지만 당신은 정식 볼 수 있습니다 : API 미들웨어. 인증 프로세스가 어떻게 작동하는지 확인할 수 있습니다. 너가 일을 발견하지 않으면 나에게 알리 라. 그러면 나는 오늘 밤 그것을 들여다보고, 나의 대답을 향상시킬 것이다. 파일에서
Laravel\Passport\Http\Middleware\CheckClientCredentials
이를 발견 할 것이다 : 당신이 깊이 파고 때 요청이 여기
League\OAuth2\Server\RecourceServer.php
확인됩니다 것을 볼 수
<?php
namespace Laravel\Passport\Http\Middleware;
use Closure;
use League\OAuth2\Server\ResourceServer;
use Illuminate\Auth\AuthenticationException;
use League\OAuth2\Server\Exception\OAuthServerException;
use Symfony\Bridge\PsrHttpMessage\Factory\DiactorosFactory;
class CheckClientCredentials
{
/**
* The Resource Server instance.
*
* @var ResourceServer
*/
private $server;
/**
* Create a new middleware instance.
*
* @param ResourceServer $server
* @return void
*/
public function __construct(ResourceServer $server)
{
$this->server = $server;
}
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*
* @throws \Illuminate\Auth\AuthenticationException
*/
public function handle($request, Closure $next, ...$scopes)
{
$psr = (new DiactorosFactory)->createRequest($request);
try{
$psr = $this->server->validateAuthenticatedRequest($psr);
} catch (OAuthServerException $e) {
throw new AuthenticationException;
}
foreach ($scopes as $scope) {
if (!in_array($scope,$psr->getAttribute('oauth_scopes'))) {
throw new AuthenticationException;
}
}
return $next($request);
}
}
. 내 추측은 거기서 답을 찾을 수 있다는 것입니다.
+0
감사합니다 일리아스. 나는 경호원을 지나칠 때 PeterPan의 도움을 받아야했다. –
관련 문제
- 1. Laravel 5.3의 모듈 구조에서 사용자를 인증하는 방법
- 2. 웹 미들웨어에서 laravel 5.3의 API 미들웨어 세션에 액세스
- 3. Laravel Passport API 다중 미들웨어
- 4. Laravel rest API 미들웨어
- 5. ASP.NET Core API 수동으로 사용자를 인증하는 방법
- 6. Laravel 5.3의 페이팔 통합
- 7. 사용자를 인증하는 방법
- 8. 비밀번호없이 사용자를 인증하는 방법
- 9. RavenDB에서 사용자를 인증하는 방법
- 10. Xamarin.Forms : 로그인하는 사용자를 인증하는 방법?
- 11. Laravel 5.3의 Style.css
- 12. Laravel 5.3의 관계는 잘못된
- 13. Laravel 5.3의 ESI 태그
- 14. 데이터베이스에 사용자를 추가하고 사용자를 인증하는 방법
- 15. 사용자 테이블에 Laravel 5.3의 Auth 컨트롤러를 통해 사용자를 추가하려면 어떻게해야합니까?
- 16. Laravel 미들웨어
- 17. cakephp에서 관리자와 사용자를 인증하는 방법
- 18. C# LDAP에서 사용자를 인증하는 방법
- 19. PHP에서 ADFS 사용자를 인증하는 방법
- 20. 내 API의 사용자를 인증하는 방법
- 21. Firebase에서 사용자를 재 인증하는 방법
- 22. 프로그래밍 방식으로 사용자를 인증하는 방법
- 23. Laravel 5.5 ThrottleRequest 미들웨어
- 24. Microsoft Graph에서 AD 그룹의 사용자를 인증하는 방법
- 25. laravel 5.3의 RouteCollection.php에서 MethodNotAllowedHttpException을 푸는 방법?
- 26. Laravel 5.3의 저장 폴더에서 이미지를 표시하는 방법?
- 27. ASP.NET 웹 API/HMAC 인증, 사용자를 대신하여 인증하는 방법?
- 28. Android에서 Rails 앱으로 사용자를 인증하는 방법 이해하기
- 29. 외부 스크립트에서 wordpress 사용자를 인증하는 방법
- 30. Laravel 5.3 미들웨어 : 인증 목적을위한 미들웨어 생성
고맙습니다. Peter Pan. –
내 기쁨. ;) – PeterPan666
요청 객체없이 ** Auth :: guard ('api') -> user() **를 사용할 수도 있습니다. – Gkiokan