2016-07-30 17 views
2

I-Stelle mit Laravel 5.2 entwickeln und verwendenLaravel 5.2 Multi-Auth und Laravel Lokalisierung Auth nicht funktioniert

https://github.com/mcamara/laravel-localization und

http://imrealashu.in/code/laravel/multi-auth-with-laravel-5-2-2/

i in diesem Link

meine Routen gefolgt alles haben. php

Route::group([ 
'prefix' => LaravelLocalization::setLocale(), 
'middleware' => ['web', 'localize', 'localeSessionRedirect', 'localizationRedirect'] 
], function() { 

    //Route::auth(); 
    Route::get('login', '[email protected]'); 
    Route::post('login', '[email protected]'); 
    Route::get('logout', '[email protected]'); 

    //user 
    Route::get('user/dashboard', ['as'=> 'user/dashboard', 'uses' => '[email protected]']); 
}); 

Route::group(
['middleware' => 'web'], function() { 

    //Admin Login Routes... 
    Route::get('/admin/login','Admin\Auth\[email protected]'); 
    Route::post('/admin/login','Admin\Auth\[email protected]'); 
    Route::get('/admin/logout','Admin\Auth\[email protected]'); 

    Route::get('admin/dashboard', 'Admin\[email protected]'); 

    Route::resource('admin/administrator', 'Admin\AdminController',['except' => 'show']); 

UserAuthController.php

namespace App\Http\Controllers; 

use Validator; 
use Auth; 
use Session; 

use Illuminate\Http\Request; 

use App\Http\Requests; 

class UserAuthController extends Controller 
{ 
    public function showLoginForm() 
    { 
     return view('auth.login'); 
    } 

    public function login(Request $request) 
    { 
     $validator = Validator::make($request->all(), [ 
       'email' => 'required|email', 
       'password' => 'required', 
      ]); 
     if ($validator->fails()){ 
      // If validation falis redirect back to login. 
      return redirect('login') 
         ->withErrors($validator) 
         ->withInput(); 
     }else { 
      $userdata = [ 
       'email' => $request->email, 
       'password' => $request->password 
       ]; 
      // doing login. 
      if (Auth::guard('user')->validate($userdata)) { 
      if (Auth::guard('user')->attempt($userdata)) { 
       return redirect('/user/dashboard'); 
      } 
      } 
      else { 
      // if any error send back with message. 
      Session::flash('error', 'Something went wrong'); 
      return redirect('login'); 
      } 
     } 

    } 

    public function logout() 
    { 
     Auth::guard('user')->logout(); 

     return redirect('login'); 
    } 
} 

UsersController.php

namespace App\Http\Controllers; 

use Auth; 

//use Session; 

use App\User_Profile; 

use Illuminate\Http\Request; 

use App\Http\Requests; 

class UsersController extends Controller 
{ 
    public function __construct() 
    { 
     $this->middleware('auth'); 
    } 

    public function index() 
    { 
     session()->put('uid',Auth::guard('user')->user()->id); 
     session()->put('username', Auth::guard('user')->user()->username); 
     session()->put('email', Auth::guard('user')->user()->email); 

     $uid = session()->get('uid'); 
     $username = session()->get('username'); 

     $profile = User_Profile::where('user_id', '=', $uid)->first(); 

     return view('users.index', compact('username', 'profile')); 
    } 
} 

Admin \ Auth \ AuthController.php

namespace App\Http\Controllers\Admin\Auth; 

use App\Admin; 
use Validator; 
use App\Http\Controllers\Admin\Controller; 
use Illuminate\Foundation\Auth\ThrottlesLogins; 
use Illuminate\Foundation\Auth\AuthenticatesAndRegistersUsers; 

class AuthController extends Controller 
{ 


    protected $redirectTo = 'admin/dashboard'; 
    protected $guard = 'admin'; 
    protected $redirectAfterLogout = 'admin/login'; 


    public function __construct() 
    { 
     $this->middleware('guest', ['except' => 'logout']); 
    } 

    protected function validator(array $data) 
    { 
     return Validator::make($data, [ 
      'name' => 'required|max:255', 
      'email' => 'required|email|max:255|unique:users', 
      'password' => 'required|confirmed|min:6', 
     ]); 
    } 



    public function showLoginForm() 
    { 
     if (view()->exists('auth.authenticate')) { 
      return view('auth.authenticate'); 
     } 

     return view('admin.auth.login'); 
    } 
    public function showRegistrationForm() 
    { 
     return view('admin.auth.register'); 
    } 
} 

mein kernel.php

namespace App\Http; 

use Illuminate\Foundation\Http\Kernel as HttpKernel; 

class Kernel extends HttpKernel 
{ 
    /** 
    * The application's global HTTP middleware stack. 
    * 
    * These middleware are run during every request to your application. 
    * 
    * @var array 
    */ 
    protected $middleware = [ 
     \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class, 
     // \Illuminate\Session\Middleware\StartSession::class, 
     // \Illuminate\View\Middleware\ShareErrorsFromSession::class, 
     // \App\Http\Middleware\VerifyCsrfToken::class, 
    ]; 

    /** 
    * The application's route middleware groups. 
    * 
    * @var array 
    */ 
    protected $middlewareGroups = [ 
     'web' => [ 
      \App\Http\Middleware\EncryptCookies::class, 
      \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, 
      \Illuminate\Session\Middleware\StartSession::class, 
      \Illuminate\View\Middleware\ShareErrorsFromSession::class, 
      \App\Http\Middleware\VerifyCsrfToken::class, 
     ], 
     // 'auth' => [ 
     //  \App\Http\Middleware\Authenticate::class, 
     //  \App\Http\Middleware\EncryptCookies::class, 
     //  \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, 
     //  \Illuminate\Session\Middleware\StartSession::class, 
     //  \Illuminate\View\Middleware\ShareErrorsFromSession::class, 
     //  \App\Http\Middleware\VerifyCsrfToken::class, 
     // ], 
     'api' => [ 
      'throttle:60,1', 
     ], 
    ]; 

    /** 
    * The application's route middleware. 
    * 
    * These middleware may be assigned to groups or used individually. 
    * 
    * @var array 
    */ 
    protected $routeMiddleware = [ 
     'auth' => \App\Http\Middleware\Authenticate::class, 
     'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class, 
     'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class, 
     'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, 
     'localize' => \Mcamara\LaravelLocalization\Middleware\LaravelLocalizationRoutes::class, 
     'localizationRedirect' => \Mcamara\LaravelLocalization\Middleware\LaravelLocalizationRedirectFilter::class, 
     'localeSessionRedirect' => \Mcamara\LaravelLocalization\Middleware\LocaleSessionRedirect::class, 
     'admin' => \App\Http\Middleware\RedirectIfNotAdmin::class, 
     'user' => \App\Http\Middleware\RedirectIfNotUser::class, 
    ]; 
} 

config/Auth. php

return [ 

    /* 
    |-------------------------------------------------------------------------- 
    | Authentication Defaults 
    |-------------------------------------------------------------------------- 
    | 
    | This option controls the default authentication "guard" and password 
    | reset options for your application. You may change these defaults 
    | as required, but they're a perfect start for most applications. 
    | 
    */ 

    'defaults' => [ 
     'guard' => 'user', 
     'passwords' => 'users', 
    ], 

    /* 
    |-------------------------------------------------------------------------- 
    | Authentication Guards 
    |-------------------------------------------------------------------------- 
    | 
    | Next, you may define every authentication guard for your application. 
    | Of course, a great default configuration has been defined for you 
    | here which uses session storage and the Eloquent user provider. 
    | 
    | All authentication drivers have a user provider. This defines how the 
    | users are actually retrieved out of your database or other storage 
    | mechanisms used by this application to persist your user's data. 
    | 
    | Supported: "session", "token" 
    | 
    */ 

    'guards' => [ 
     'user' => [ 
      'driver' => 'session', 
      'provider' => 'users', 
     ], 

     'admin' => [ 
      'driver' => 'session', 
      'provider' => 'admin', 
     ], 

     'api' => [ 
      'driver' => 'token', 
      'provider' => 'users', 
     ], 
    ], 

    /* 
    |-------------------------------------------------------------------------- 
    | User Providers 
    |-------------------------------------------------------------------------- 
    | 
    | All authentication drivers have a user provider. This defines how the 
    | users are actually retrieved out of your database or other storage 
    | mechanisms used by this application to persist your user's data. 
    | 
    | If you have multiple user tables or models you may configure multiple 
    | sources which represent each model/table. These sources may then 
    | be assigned to any extra authentication guards you have defined. 
    | 
    | Supported: "database", "eloquent" 
    | 
    */ 

    'providers' => [ 
     'users' => [ 
      'driver' => 'eloquent', 
      'model' => App\User::class, 
     ], 

     'admin' => [ 
      'driver' => 'eloquent', 
      'model' => App\Admin::class, 
     ] 

     // 'users' => [ 
     //  'driver' => 'database', 
     //  'table' => 'users', 
     // ], 
    ], 

    /* 
    |-------------------------------------------------------------------------- 
    | Resetting Passwords 
    |-------------------------------------------------------------------------- 
    | 
    | Here you may set the options for resetting passwords including the view 
    | that is your password reset e-mail. You may also set the name of the 
    | table that maintains all of the reset tokens for your application. 
    | 
    | You may specify multiple password reset configurations if you have more 
    | than one user table or model in the application and you want to have 
    | separate password reset settings based on the specific user types. 
    | 
    | The expire time is the number of minutes that the reset token should be 
    | considered valid. This security feature keeps tokens short-lived so 
    | they have less time to be guessed. You may change this as needed. 
    | 
    */ 

    'passwords' => [ 
     'users' => [ 
      'provider' => 'users', 
      'email' => 'auth.emails.password', 
      'table' => 'password_resets', 
      'expire' => 60, 
     ], 

     'admin' => [ 
      'provider' => 'admin', 
      'email' => 'auth.emails.password', 
      'table' => 'password_resets', 
      'expire' => 60, 
     ], 
    ], 

]; 

Ich habe Erfolg im Admin angemeldet und alles tun, Backend

zu verwalten, aber nicht in Benutzern, jedes Mal angemeldet, wenn ich umleiten aktualisiere immer wieder zum Login-Seite. es scheint, dass $ this-> middleware ('auth') nicht funktioniert.

Können Sie mir helfen, wo habe ich vermisst?

Danke

+0

Konnten Sie Lösung finden? – Someone

Antwort

-1

Seien Sie sicher, dass die Formulare in Ihren Ansichten (das Login-Formular, Anmeldeformular, ...) haben Post an die URLs lokalisiert.

Also in Ihren Blade-Ansichten verwenden:

<form method="POST" action="{{ url(LaravelLocalization::getLocalizedURL(LaravelLocalization::getCurrentLocale(), '/password/email')) }}"> 
    ... 
</form> 
-1

Der oben genannte Skripte in Ordnung ist.

machte ich einen Fehler in der Ansicht, ich

<a href="{{Auth::guard('guard_name')->user()->logout())}}">Signout</a> 

Logout-Funktion in der Navigationsansicht platziert.

Ich habe die Verbindung mit normalen Abmelden Verbindung geändert.

<a href="{{url('logout')}}">Signout</a> 

Jetzt funktioniert es.

danke

+0

Warum die -1 auf meinem Vorschlag unten ?? Ich schlug vor, Ihre Ansicht zu überprüfen und ich hatte Recht, der Fehler war dort. Sie haben Ihre Ansicht nicht in Ihre Frage eingegeben, sodass niemand wissen konnte, wo der Fehler aufgetreten ist. Und übrigens, mein Vorschlag löste viele Probleme für mich mit mehrfacher Authentisierung und Lokalisierung. – cumul

+0

PS.Wenn Sie sich wie in Ihrem Beispiel mit einer nicht lokalisierten URL abmelden, ist das kein Problem, aber dennoch empfehle ich, alle Links mit dem ausgewählten Lokalisierungscode voranzuzählen. Vor allem beim Buchen von Daten, zum Beispiel logindata. – cumul

+0

Hallo, Entschuldigung, über den Beitrag. Ich fand die Lösung zwei Tage nachdem ich die Frage gepostet habe, und im Moment habe ich eine Zeit, um meinen Beitrag zu aktualisieren –