2016-11-06 5 views
1

Ich habe eine Laravel Anwendung mit folgenden Routen:Laravel Last Login Ansicht statt Umleitung auf/login

  1. http://site-name/ (Auth)
  2. http://site-name/home (öffentlich)
  3. http://site-name/about (public)

Da http://site-name/ einen autorisierten Benutzer benötigt, ist eine Anmeldeprüfung erforderlich. Ich habe folgende Route geschrieben für diese

Route::get('/', '[email protected]');

Wo SiteController ist,

<?php 

namespace App\Http\Controllers; 

use Illuminate\Http\Request; 

class SiteController extends Controller 
{ 
    /** 
    * Create a new controller instance. 
    * 
    * @return void 
    */ 
    public function __construct() 
    { 
     $this->middleware('auth'); 
    } 

    /** 
    * Show the application dashboard. 
    * 
    * @return \Illuminate\Http\Response 
    */ 
    public function index() 
    { 
     return view('play'); 
    } 
} 

Above __construct() wird der Benutzer zu http://site-name/login Ansicht umleiten.

Jetzt beginnt der schwierige Teil. Ich muss meine Laravel-Anwendung so ändern, dass sie für die Anmeldung die Login-Ansicht für nicht autorisierte Benutzer unter http://site-name/ anzeigt, anstatt sie zur Anmeldung an http://site-name/login umzuleiten.

Antwort

1

Wenn Sie den Umleitungspfad für nicht autorisierte Benutzer ändern möchten. Gehen Sie zum:

app \ Ausnahmen \ handler.php

innerhalb des unauthenticated Methode Sie Ihre Umleitungspfad auf http://site-name/ statt http://site-name/login diese ändern können.

protected function unauthenticated($request, AuthenticationException $exception) 
    { 
     if ($request->expectsJson()) { 
      return response()->json(['error' => 'Unauthenticated.'], 401); 
     } 

     return redirect()->guest('/login'); // Here you should be specify your unauthorized redirect url path. 
    } 
+0

RimonKhan möchte ich loa d Login-Ansicht, anstatt auf eine neue URL oder Route umzuleiten, um die Login-Ansicht anzuzeigen. – sam

+0

Ersetzen Sie einfach diese URL 'return redirect() -> guest ('/ login');' Was Sie wollen 'return redirect() -> guest ('/');' –

+0

Derzeit in Laravel-5.3, [Authenticate .php] (https://github.com/laravel/framework/blob/7804a8eb3a2944157ee3d154fa81335cddbb5156/src/Illuminate/Auth/Middleware/Authenticate.php) haben eine andere Implementierung. Es scheint nicht wie oben erwähnt zu mögen. Wie gehe ich damit um? – sam

0

Wie Sie im Kommentarbereich gefragt haben, hier ist eine Möglichkeit, nicht umzuleiten, sondern nur eine Vorlage zu rendern!

Aber ich denke, Sie wollen auf der gleichen Seite bleiben und einen Fehler oder etwas zeigen? Laracasts Ajax call login Laravel

Wenn Sie eine Ansicht rendern, stellen Sie sicher, dass es sich um eine Webroute und nicht um eine API-Route handelt. Wenn es eine api Strecke sicher seine Drosselung in

App deaktivieren/Http/Kernel.php

Beispiel eine Vorlage auf authentifizieren() von Rendering:

app \ Ausnahmen \ handler.php

/** 
* @param       $request 
* @param AuthenticationException $exception 
* 
* @return \Illuminate\Contracts\View\View|\Illuminate\Http\JsonResponse 
*/ 
protected function unauthenticated($request, AuthenticationException $exception) 
{ 
    if ($request->expectsJson()) { 
     return response()->json(['error' => 'Unauthenticated.'], 401); 
    } 

    return \View::make('login',['title' => 'unauthenticated']); 
} 
Verwandte Themen