Teilen Sie Laravel Passport Pitfall Diary
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
Lösung:Definieren Sie es in Ihrem AuthServiceProvider
neu:token
Passport 一出生就自带了很多的路由。。 but,这些东东大部分对我是真的没用啊
解决方案:
在你的 AuthServiceProvider
里重新定义:
Passport::routes(function (RouteRegistrar $router) { $router->forAccessTokens(); }, ['prefix' => 'api']);
坑2: 注册账号时,如何手动生成 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" }
完美解决。
坑3:我想要使用手机号登录
Passport 其实已经提供了动态修改用户登录的接口,只不过没有在文档里写出来
解决方案:
在你的 User Model 里增加如下方法
public function findForPassport($login) { return User::orWhere('email', $login)->orWhere('mobile', $login)->first(); }
坑4: 当使用错误的 token
时, passport 总会跳转到 login 方法
查看源码发现 passport 用的是 web
auth
中间件,难怪如此
在你的请求头里增加 Accept:application/json
rrreee
Pit 2: So registrieren Sie manuell ein Konto. Generieren Sie einen 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. 🎜🎜Pit 3: Ich möchte mich mit meiner Mobiltelefonnummer anmelden🎜
🎜Passport bietet tatsächlich eine Schnittstelle zum dynamischen Ändern der Benutzeranmeldung, diese steht jedoch nicht im Dokument🎜Lösung: 🎜In Ihrem Benutzer Fügen Sie dem Modell die folgende Methode hinzu🎜rrreee🎜Pit 4: Bei Verwendung des falschen token
springt Passport immer zur Anmeldemethode🎜
🎜Sehen Sie sich den Quellcode an und finden Sie ihn Passport verwendet 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!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Methode zum Abholen des Rücksendecode, wenn das Senden von Laravel -E -Mails fehlschlägt. Wenn Sie Laravel zur Entwicklung von Anwendungen verwenden, stellen Sie häufig Situationen auf, in denen Sie Überprüfungscodes senden müssen. Und in Wirklichkeit ...

Laravel -Zeitplan -Aufgabe Ausführen nicht reagierende Fehlerbehebung Bei Verwendung der Zeitplanung von Laravel -Zeitplänen werden viele Entwickler auf dieses Problem stoßen: Zeitplan: Run ...

Die Methode zum Umgang mit Laravels E -Mail -Versagen zum Senden von Verifizierungscode besteht darin, Laravel zu verwenden ...

So implementieren Sie die Tabellenfunktion von benutzerdefiniertem Klicken, um Daten in dcatadmin (laravel-admin) hinzuzufügen, wenn Sie DCAT verwenden ...

Die Auswirkungen des Austauschs von Redis -Verbindungen im Laravel -Framework und der Auswahl von Methoden bei Verwendung von Laravel -Framework und Redis können Entwickler auf ein Problem stoßen: Durch Konfiguration ...

Benutzerdefinierte Mieterdatenbankverbindung in Laravel Multi-Tenant-Erweiterungspaket Stanz/Mietverhältnis beim Erstellen von Multi-Mandanten-Anwendungen mit Laravel Multi-Tenant-Erweiterungspaket Stanz/Mietverhältnis, ...

Laraveleloquent-Modellab Abruf: Das Erhalten von Datenbankdaten Eloquentorm bietet eine prägnante und leicht verständliche Möglichkeit, die Datenbank zu bedienen. In diesem Artikel werden verschiedene eloquente Modellsuchtechniken im Detail eingeführt, um Daten aus der Datenbank effizient zu erhalten. 1. Holen Sie sich alle Aufzeichnungen. Verwenden Sie die Methode All (), um alle Datensätze in der Datenbanktabelle zu erhalten: UseApp \ Models \ post; $ posts = post :: all (); Dies wird eine Sammlung zurückgeben. Sie können mit der Foreach-Schleife oder anderen Sammelmethoden auf Daten zugreifen: foreach ($ postas $ post) {echo $ post->

Verarbeiten Sie 7 Millionen Aufzeichnungen effizient und erstellen Sie interaktive Karten mit Geospatial -Technologie. In diesem Artikel wird untersucht, wie über 7 Millionen Datensätze mithilfe von Laravel und MySQL effizient verarbeitet und in interaktive Kartenvisualisierungen umgewandelt werden können. Erstes Herausforderungsprojektanforderungen: Mit 7 Millionen Datensätzen in der MySQL -Datenbank wertvolle Erkenntnisse extrahieren. Viele Menschen erwägen zunächst Programmiersprachen, aber ignorieren die Datenbank selbst: Kann sie den Anforderungen erfüllen? Ist Datenmigration oder strukturelle Anpassung erforderlich? Kann MySQL einer so großen Datenbelastung standhalten? Voranalyse: Schlüsselfilter und Eigenschaften müssen identifiziert werden. Nach der Analyse wurde festgestellt, dass nur wenige Attribute mit der Lösung zusammenhängen. Wir haben die Machbarkeit des Filters überprüft und einige Einschränkungen festgelegt, um die Suche zu optimieren. Kartensuche basierend auf der Stadt
