我的项目的目的是在url中显示用户的公司名称,它在登录时可以完美地工作。但是,当您注销时,我应用以下解决方案的任何视图都会抛出一个非对象错误的属性,这是因为它正在查找auth::user company,但找不到它。
我已经尝试了一些事情,但不能让它工作,以重定向登录,同时仍然使用以下解决方案。有没有办法做到这一点?
出现错误的web.php代码:
Route::get('/home/{company}', 'HomeController@index');
Route::get('/home',function(){
return redirect('home/'.Auth::user()->company);
});
因此,当我注销时,url是mywebsite/home,我会得到对象错误,但如果我手动修改任何内容,它会重定向。例如,我的网站/主页/随机
未给出错误并按预期进行重定向的代码:
Route::get('/home', 'HomeController@index');
发布于 2018-10-23 03:39:16
与Jonathons的解决方案类似,使用auth::check,但将所有路由放入一个组中确实起到了作用。
Route::group(['middleware' => ['auth']], function() { -- all routes in here --- });
发布于 2018-10-23 03:26:33
尝试如下所示:
Route::get('/home',function(){
return redirect(Auth::check() ? 'home/'.Auth::user()->company : 'login');
});
这样,当一个命中/home
地址时,系统将首先检查是否有用户登录。如果是这样,它将重定向到登录用户的公司页面。如果不是,它将重定向到登录页面。如果有用户登录,Auth::check()
将返回true
,否则返回false
。
发布于 2018-10-23 03:40:55
尝试为此更改您的重定向
Route::get('/home/{company}', 'HomeController@index')->name('home')
Route::get('/home',function(){
return redirect()->route('home', \Auth::user()->company);
});
https://stackoverflow.com/questions/52936392
复制相似问题