我正在使用Laravel 5.3.29。我想为身份验证创建自定义路由。
这是我的网络路线代码。
Route::group(['prefix' => 'hrs'], function(){ Auth::routes(); });
Route::get('/', function () { return view('welcome'); });
Route::get('/home', 'HomeController@index');
我将url更改为/ home到/ hrs / home和其他所有资源代码。
这是我的HomeController代码:
public function __construct()
{ $this->middleware('auth'); }
public function index()
{ return view('home'); }
当我没有登录时遇到localhost / home时会出现问题。它将我重定向到localhost / login而不是localhost / hrs / login。 redirect error pic
我必须在哪里更改才能将我重定向到localhost / hrs / login。
答案 0 :(得分:2)
除了一件事,你做得很好。您尚未将Handler.php
文件更改为app\Exceptions\
目录。只需将Handler.php
文件更改为unauthenticated()
方法,如下所示:
返回redirect() - > guest('hrs / login');
完整代码:
protected function unauthenticated($request, AuthenticationException $exception)
{
if ($request->expectsJson()) {
return response()->json(['error' => 'Unauthenticated.'], 401);
}
return redirect()->guest('hrs/login');
}
答案 1 :(得分:0)
这帮助了我。在自定义控制器中,应使用方法受保护的函数redirectTo()
,而不是受保护的 $ redirectTo 属性。这是我的代码。代替
protected $redirectTo = 'home';
我使用:
protected function redirectTo(){
return route('home');
}
This tutorial帮助我解决了这个问题。