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


Laravel load login view instead of redirecting to /login

我有一个Laravel应用程序,有以下路由:

  1. http://site-name/(身份验证)
  2. http://site-name/home(公共)
  3. http://site-name/about(公共)

由于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进行登录。

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

应用程序异常' ' 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.
    }

正如你在评论部分所问的,这里有一种不重定向的方法,而只是呈现一个模板!

但我认为你想停留在同一页,显示一个错误或什么?看看这个链接:Laravel

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

中禁用throttling。

应用程序/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']);
}