기본적으로 Laravel doc(https://laravel.kr/docs/5.3/passport)를 따라했다.
1. '설치하기' 파트는 기본적으로 동일하나, Laravel 5.4가 나오면서 passport가 2.0.x로 업데이트 되었으므로, 버전을 지정해준다.
(https://laravel.com/docs/5.3/passport#installation)
composer require laravel/passport=~1.0
하는김에 Laravel을 5.4로 업데이트 해버릴까 싶어 시도해봤는데 아래와같은 에러를 해결하지 못해 우선 보류했다.
Call to undefined method Illuminate\Foundation\Application::share()
(제보바람)
2. '빠른 프론트엔드 시작하기' 파트는 건너뛴다. (웹 앱을 개발중이거나 기타 필요한 경우엔 해도 좋다.)
3. '토큰 지속시간' 부분은 필요하면 추가한다.
4. client를 생성한다.
php artisan passport:client
DB의 oauth_clients 테이블에 데이터가 추가되었을 것이다.
grant_type 관련 오류가 생기면 해당 테이블을 보면 된다.
personal_access_client, password_client 필드의 값을 바꿔주면 해결되는것 같았다.
(개인적으로 해당 필드가 0일때 정상 동작을 했다. 자세한건 oauth 문서를 봐야할듯 하다.)
5. 사용자 모델에서 passport가 사용자를 조회할 때 사용되는 메서드를 오버라이드 한다. (중요)
지난번 글에 맞게 user_id, user_password라고 가정한다.
테이블명에 따라 모델은 아마 SiteUser.php 였을것이다.
- 사용자 ID 조회: 해당하는 사용자의 데이터를 리턴해준다.
public function findForPassport($username){return $this->where("user_id", $username)->first();}
- 사용자 Password 검증: 패스워드 일치 여부를 bool 형태로 리턴해준다.
public function validateForPassportPasswordGrant($password){return password_verify($password, $this->user_password);}
6. passport가 자동으로 생성한 http://your-app/oauth/token 라우트에 데이터를 보내 토큰을 받을 수 있다.
grant_type:passwordusername:{user_id}password:{user_password}client_id:{client_id}client_secret:{client_secret}redirect_uri:http://your-app/callback-route
사용자에게 입력받은 값들과, 'artisan passport:client'로 발급된 client_id와 client_password를 보내주면 된다.
token_type, expires_in, access_token, refresh_token 을 받을 수 있다.
7. 받은 토큰을 'auth:api' 미들웨어로 그룹화된 route에 아래와 같은 Header를 만들어 보내주면 Auth::user() 를 통해 web에서 로그인한 사용자와 같이 조회할 수 있다.
Accept:application/jsonAuthorization:Bearer {access_token}
'내가 자꾸 까먹어서 쓰는 개발 이야기 > Laravel' 카테고리의 다른 글
Phpstorm에서 Laravel의 mailchimp 플러그인 사용하기 (0) | 2018.01.02 |
---|---|
Laravel에서 gmail로 html 메일 보내기 (2019.5.10 내용추가) (0) | 2018.01.02 |
[공통] vendor 디렉토리를 제외한 저장소를 통해 capistrano로 배포하기 (0) | 2017.02.15 |
[5.3] 사용자 정의 테이블로 로그인 하기 (0) | 2017.01.05 |
[Ubuntu 16.04] Laravel 5.3 설치 및 설정하기 (0) | 2016.12.26 |
최근댓글