Laravel automatisch ausgeloggt nach wenigen Sekunden?
Ich bin der Entwicklung von web-Anwendung mit Laravel 5 und mit angularJs RESTFUL apis.
Mit middleware
an-Authentifizierung Zweck. Mein problem ist, nach dem senden einige verlangen gleichzeitig,das system automatisch abgemeldet und senden 401 Ausnahme von laravel Seite.
API-Basis-controller:
class ApiController extends BaseController {
use DispatchesCommands, ValidatesRequests;
function __construct() {
$this->middleware('api.auth');
}
}
Middleware:
class APIMiddleware {
/**
* Handle an incoming request.
*
* @param Request $request
* @param Closure $next
* @return mixed
*/
public function handle($request, Closure $next) {
if (!Auth::check()) {
abort(401, "Unauthorized");
}
return $next($request);
}
}
Log-in-controller
public function login(LoginRequest $request) {
if (Auth::check()) {
Auth::logout();
}
if (Auth::attempt(['email' => $request->input('email'), 'password' => $request->input('password')], $request->input('is_remember'))) {
return array(true);
} else {
abort(401, "Invalid email & password");
}
}
Nach wenigen Wunsch gegangen, Server-log-out und sendet 401 Ausnahme. Ich komme bei diesem Problem.
- für mich ist dieser Fehler wurde aufgrund der änderung always_populate_raw_post_data = -1 bis always_populate_raw_post_data = 1 in php.ini-Datei....endlich habe ich es geändert always_populate_raw_post_data = 0 und alles hat gut funktioniert
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich bin mir jetzt nicht 100% sicher (und je nach set-up kann ich auch nicht sagen, ich bin 90% sicher), Aber nach dem ändern mein
session_driver
ausfile
zudatabase
habe ich anscheinend das Problem behoben, wenn es das gleiche Problem.Denke ich, tun das samething, wie Sie mit meiner app ist, die ein start-up von einer Seite, ich mache 6 Antrag (dieser ist Entwicklung und ich werde mich ändern, es eine also bitte nicht Weinen). Wenn ich das laden dieser Seite, es funktioniert mit etwa 3 oder 4 beantragen, dann die anderen 2-3 kommen zurück mit einem
unauthorised
Antwort. Außerdem passiert das nur auf Anforderung, erfordernmiddleware => auth
.Hier also meine Theorie, warum dies geschieht:, Weil standardmäßig Sitzungen sind gespeichert in einem Datei - macht mehrere Anfragen auf einmal bedeutet, dass Datei geöffnet wird 6 mal auf einmal - wahrscheinlich bringt ihn bis (abhängig von deiner Maschine). Daher ändern Sie die Sitzung um eine Datenbank, die entworfen, um Tausende von Anfragen auf einmal, funktioniert!
LÖSUNG:
.env
- Datei und ändern SieSESSION_DRIVER=file
zuSESSION_DRIVER=database
.php artisan session:table
.composer dump-autoload
für eine gute Praxis.php artisan migrate
).HINWEIS: ich bin mir nicht 100% sicher, aber wenn dies der Fall ist, aber für mich ist diese Lösung gearbeitet. Ich bin mir auch bewusst, dass diese Frage ist sehr alt, aber sowohl die Entwickler als ich mit der Arbeit und habe selber dieses Problem gehabt, und es scheint nicht zu einer Lösung, so Einfach, aber ich würde diesen post.
Kann es ein problem sein, dass Sie Zugriff auf die user-variable illegal. Bitte verwenden Sie
Auth::check()
vor dem Zugriff aufAuth::user()
Dies scheint zu funktionieren für mein Projekt. Optional können Sie versuchen, für die änderung der session-Treiber aus .env-Datei.user
Beispiel, es wird gelöst. Vielleicht war ich versucht, Zugriff aufuser
wenn esnull
oder sth like, die.Das war für mich der Prozess um das problem zu lösen:
cookie
Schlüssel inapp/session.php
.php artisan config:clear
.Könnte nützlich sein für jemanden: Hatte das gleiche problem. Ich habe mich verändert, die cookie-Namen in der session-Einstellungen. Standardmäßig ist es laravel_session, so versuchen Sie es auf etwas anderes
Löste ich das gleiche Problem durch das löschen des cache mit php artisan-cache:klar und läuft auch composer dump-autoload. Hoffe, das funktioniert für Sie.
Ich hatte ein ähnliches problem diese Woche. Ich habe einen server mit mehreren Laravel Applikationen. Eine Anwendung war die Protokollierung der anderen aus.
Dem problem zu tun hatte mit session-management. Der session-name war die gleiche für alle Anwendungen. Ändern würde es genug sein, um zu verhindern, dass unterschiedliche Anwendungen-Konflikt. Jedoch, ich kann verschiedene Instanzen der gleichen Anwendung in den server (für Testzwecke, zum Beispiel). So, und ändern Sie nur den Namen der session nicht ausreichen würde.
Mein problem zu lösen richtig, ich habe das session-Pfad, um die Konfiguration einmalig pro Instanz. In der
config/session.php
ich definiert etwas wie dieses:Ich die
parse_url
Funktion mit der UmgebungsvariableAPP_URL
da mein server hat die Instanzen bereitgestellt werden, unter etwas wiehttp://example.com/systemx
.Ich hoffe, dies hilft jemand, der könnte am Ende mit der gleichen Art von problem.
Ich denke, man kopiert ein altes Projekt für eine neue Anwendung, so müssen Sie ändern die
config/session.php