Middleware in Laravel funktioniert nicht richtig
Ich versuche, Middleware auf meinen Routen wie folgt anzuwenden:
Route::get('twitterlogin','TwitterController@gettwitterlogin');
Route::post('twitterlogin','TwitterController@posttwitterlogin');
Route::group(['middleware'=>'auth'],function()
{
Route::get('twitternewsfeed','TwitterController@gettwitternewsfeed');
Route::post('postimage','TwitterController@postimage');
Route::post('posttweet','TwitterController@posttweet');
Route::get('twitterlogout','TwitterController@gettwitterlogout');
Route::post('editprofilepic','TwitterController@posteditprofilepic');
Route::post('searchuser','TwitterController@postsearchuser');
Route::post('edittweet{id}','TwitterController@postedittweet');
Route::get('deletetweet{id}','TwitterController@getdeletetweet');
Route::post('editprofile','TwitterController@posteditprofile');
Route::get('userprofile{email}','TwitterController@getuserprofile');
});
Und wenn ich versuche, mein Login-Formular abzuschicken, komme ich nicht auf die nächste Seite. Es öffnet wieder die Login-Seite....was ist das genaue Problem dabei? Meine authentifizierte Middleware ist wie folgt....
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Contracts\Auth\Guard;
class Authenticate
{
/**
* The Guard implementation.
*
* @var Guard
*/
protected $auth;
/**
* Create a new middleware instance.
*
* @param Guard $auth
* @return void
*/
public function __construct(Guard $auth)
{
$this->auth = $auth;
}
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
if ($this->auth->guest()) {
if ($request->ajax()) {
return response('Unauthorized.', 401);
} else {
return redirect()->guest('twitterlogin');
}
}
return $next($request);
}
}
Ich gehe davon aus Route::post('twitterlogin','TwitterController@posttwitterlogin')
, dass Sie die Route verwenden, um Ihren Login-Vorgang durchzuführen - bitte stellen Sie sicher, dass Sie den Benutzer mit Laravels Auth korrekt anmelden und den Benutzer auf die entsprechende Route in der posttwitterlogin
Methode umleiten
Ich habe das Gefühl, dass Sie auch eine andere Tabelle zum Speichern von Benutzerdaten verwenden - in diesem Fall stellen Sie bitte sicher, dass Sie Ihre Konfigurationsdatei auth.php entsprechend eingerichtet haben
Falls Sie aus irgendeinem Grund einen benutzerdefinierten Authentifizierungsmechanismus verwenden, müssen Sie ihn $this->auth->guest()
in Ihrer Middleware durch die entsprechende alternative Prüfung für den nicht angemeldeten Benutzer ersetzen
Zum Beispiel: Wenn Sie eine Session-Variable festlegen is_authenticated
, die nach erfolgreicher Anmeldung true
mit aufgerufen \Session::put('is_authenticated', true)
wird, überprüfen Sie sie if(\Session::get('is_authenticated') === true)
in Ihrer Middleware, anstatt sich auf die Laravel Auth-Methode zu verlassenif ($this->auth->guest())