我有一个Laravel应用程序,有以下路由:
- http://site-name/(身份验证)
- http://site-name/home(公共)
- 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']);
}