laravel - Laravel 登录后要去 / 路由
问题描述
这是我的登录控制器
protected $redirectTo;
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
if(Auth::check() && Auth::user()->role->id == 1){
$this->redirectTo=route('admin.dashboard');
}
else{
$this->redirectTo=route('user.dashboard');
}
$this->middleware('guest')->except('logout');
}
这是我的 web.php
Route::get('/', function () {
return view('welcome');
})->name('home');
Auth::routes();
我不知道为什么在成功登录其去往/路线后我想将其发送到另一条路线,在登录后我手动输入路线我成功查看了该路线如果我登录它不会显示但怎么能我在登录路线后管理
解决方案
你这样做是不对的。您不应该将此类代码放入控制器构造函数中,因为它可能无法正常工作。
相反,在您的控制器中,您应该定义自定义redirectTo
方法:
protected function redirectTo()
{
if(Auth::check() && Auth::user()->role->id == 1) {
return route('admin.dashboard');
}
return $this->redirectTo=route('user.dashboard');
}
这应该有效,因为在Illuminate/Foundation/Auth/RedirectsUsers.php
trait 中有方法:
public function redirectPath()
{
if (method_exists($this, 'redirectTo')) {
return $this->redirectTo();
}
return property_exists($this, 'redirectTo') ? $this->redirectTo : '/home';
}
默认情况下,当用户成功登录时,稍后在 LoginController 中使用定义。
推荐阅读
- linux - 如何将左三角形 (<) 作为别名命令的一部分?
- javascript - 如何用 NestJS 重新抛出 HttpService 调用的错误?
- html - 如何为不同的css文件编写不同的html链接?
- javascript - 如何在javascript中等待grpc响应
- reactjs - 当状态在不同的 reducer 中改变时重新渲染组件
- http - 未提供静态目录
- react-native - 何时从 Authentication SwitchNavigator 导航?
- javascript - 未找到模块:错误:无法解析“C:\dev\jszip-test\node_modules\jszip\lib”中的“流”
- node.js - 我可以使用 require 获取 createSagaMiddleware 吗?
- android - Android Kotlin 无法更改函数中的文本字符串