Laravel加载登录视图而不是重定向到/ login

时间:2016-11-06 17:45:05

标签: php laravel laravel-5.3 php-7

我有一个具有以下路线的Laravel应用程序:

  1. http://site-name/(auth)
  2. http://site-name/home(公开)
  3. http://site-name/about(公开)
  4. 由于http://site-name/需要授权用户,因此需要进行登录检查。 我为此写了以下路线

    Route::get('/', 'SiteController@index');

    SiteController的位置,

    <?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');
        }
    }
    

    以上__construct()会将用户重定向到http://site-name/login视图。

    现在,棘手的部分开始了。我需要修改我的laravel应用程序,以便登录时,它会向http://site-name/上的未授权用户显示登录视图,而不是重定向到http://site-name/login进行登录。

2 个答案:

答案 0 :(得分:1)

如果您想更改未经授权的用户重定向路径。转到:

  

应用\例外\ Handler.php

unauthenticated方法中,您可以更改http://site-name/上的重定向路径,而不是http://site-name/login

 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.
    }

答案 1 :(得分:0)

正如您在评论部分中所提到的,这是一种不重定向的方法,而只是渲染模板!

但是我想你想留在同一页面并显示错误或其他什么? 看看这个链接: Laracasts Ajax call login Laravel

如果您渲染一个视图,请确保它是一个Web路由而不是api路由。 如果是api路线,请确保在

中停用限制
  

app / Http / Kernel.php

在unauthenticated()上呈现模板的示例:

  

应用\例外\ 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']);
}
相关问题