werde ich das Schneidetagebuch von Laravel Passport mit Ihnen teilen. Ich hoffe, dass es Freunden, die es brauchen, hilfreich sein wird!
Die meisten früheren Projekte verwendeten DingoAPI + JWT-auth, um die API-Authentifizierung zu implementieren. Obwohl Laravel Passport sehr früh veröffentlichte, wurde ihm nicht viel Aufmerksamkeit geschenkt.Ich habe heute Passport in die Hand genommen, obwohl ich auf viele Fallstricke gestoßen bin, ist es immer noch sehr einfach zu verwenden~
Pit 1: Im Moment möchte ich nur token
bekommen
AuthServiceProvider
neu:token
Passport 一出生就自带了很多的路由。。 but,这些东东大部分对我是真的没用啊
解决方案:
在你的 AuthServiceProvider
里重新定义:
Passport::routes(function (RouteRegistrar $router) { $router->forAccessTokens(); }, ['prefix' => 'api']);
Token
?jwt-auth 的 JWTAuth::fromUser($user);
可以很简单的生成token
,但是在 Passport 里似乎没有现成的方法。
解决方案:
注册完账号后,再一次主动请求 oauth/token
public function register(Request $request) { $validator = $this->validator($request->all()); if ($validator->fails()){ return response()->json($validator->errors()); } event(new Registered($user = $this->create($request->all()))); $client = \DB::table('oauth_clients')->where('password_client', 1)->first(); $request->request->add([ 'username' => $user->email, 'password' => $request->password, 'grant_type' => 'password', 'client_id' => $client->id, 'client_secret' => $client->secret, 'scope' => '*' ]); $proxy = Request::create( 'oauth/token', 'POST' ); return Route::dispatch($proxy); }
执行,获得返回
{ "token_type": "Bearer", "expires_in": 1296000, "access_token": "xxx", "refresh_token": "xxx" }
完美解决。
Passport 其实已经提供了动态修改用户登录的接口,只不过没有在文档里写出来
解决方案:
在你的 User Model 里增加如下方法
public function findForPassport($login) { return User::orWhere('email', $login)->orWhere('mobile', $login)->first(); }
token
时, passport 总会跳转到 login 方法查看源码发现 passport 用的是 web
auth
中间件,难怪如此
在你的请求头里增加 Accept:application/json
rrreee
Token code> ?<br>
JWTAuth::fromUser($user);
kann problemlos token
generieren, aber es scheint keine vorgefertigte Methode zu geben im Reisepass. Lösung: 🎜Fordern Sie nach der Registrierung des Kontos aktiv erneut oauth/token
🎜rrreee🎜 an, führen Sie es aus und erhalten Sie die Rückgabe 🎜rrreee🎜Perfekte Lösung. 🎜token
springt Passport immer zur Anmeldemethode🎜web
auth
Middleware, kein Wunder, dass es so ist🎜Fügen Sie Accept:application/json
in Ihren Anforderungsheader ein, um das Problem zu lösen🎜Für Beispiel:🎜🎜🎜Das obige ist der detaillierte Inhalt vonTeilen Sie Laravel Passport Pitfall Diary. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!