我有一个具有以下路线的Laravel应用程序:
由于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进行登录。
答案 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']);
}