2017-03-10 2 views
1

Ich versuche, Middleware auf meine Routen wie diese anzuwenden:Middleware in Laravel nicht funktioniert nicht richtig

Route::get('twitterlogin','[email protected]'); 
Route::post('twitterlogin','[email protected]'); 
Route::group(['middleware'=>'auth'],function() 
{ 
    Route::get('twitternewsfeed','[email protected]'); 
    Route::post('postimage','[email protected]');  
    Route::post('posttweet','[email protected]');  
    Route::get('twitterlogout','[email protected]'); 
    Route::post('editprofilepic','[email protected]'); 
    Route::post('searchuser','[email protected]'); 
    Route::post('edittweet{id}','[email protected]');  
    Route::get('deletetweet{id}','[email protected]'); 
    Route::post('editprofile','[email protected]');  
    Route::get('userprofile{email}','[email protected]'); 
}); 

Und wenn ich es mir nicht bin versucht zu Anmeldungsformular einreichen nicht auf der nächsten Seite bringen. Es öffnet sich wieder die Login-Seite .... Was ist das genaue Problem dabei? Meine beglaubigen 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); 
} 
} 

Antwort

0

Ich nehme an, Sie sind mit dem Route::post('twitterlogin','[email protected]') Route Ihre Login-Vorgang auszuführen - stellen Sie sicher, dass Sie den Benutzer mit Laravel's Auth korrekt sind Anmeldung und leitet den Benutzer auf die geeignete Route in der posttwitterlogin Methode

ich glaube, Sie auch eine andere Tabelle mit Benutzerdaten speichern können - in diesem Fall, bitten wir sicherstellen, dass Sie Ihre auth.php config file setup appropriately

Falls sind Sie eine benutzerdefinierte Authentifizierung verwenden Mechanismus für einige Deshalb müssen Sie $this->auth->guest() in Ihrer Middleware mit der entsprechenden alternativen Check für den Benutzer ersetzen, nicht

Für zB in eingeloggte werden: wenn Sie ein Session-Variable Anmeldung is_authenticated zu true mit \Session::put('is_authenticated', true) auf erfolgreich aufgerufen Einstellung in , werden Sie mit if(\Session::get('is_authenticated') === true) in Ihrer Middleware dafür suchen, statt sich auf die Laravel-Auth-Methode zu verlassen if ($this->auth->guest())

Verwandte Themen