我有一个管理面板,我用用户身份验证保护 . 一旦我尝试访问它,它会将我重定向到登录表单,该表单使用“访客”中间件(这是预期的行为) . 一旦我尝试登录它就像魅力一样,将我重定向到管理仪表板并创建Auth对象(我可以检索名称) . 但是,如果我单击面板内的任何链接,或按F5,它会将我重定向回登录表单 . 为了测试发生的事情,我从管理面板中删除了'auth'中间件保护,当我尝试检索Auth :: user() - > name属性时,它给了我一个错误 .
Trying to get property 'name' of non-object
所以我假设它在每次刷新页面时都会销毁Auth对象,我不明白这个行为是从哪里来的 . 我正在使用默认的Auth中间件,文档中提供了LoginController(有一些调整):
<?php
namespace App\Http\Controllers\Authentication;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
class LoginController extends Controller
{
public function authenticate(Request $request){
$email = $request->input('email');
$password = $request->input('password');
$remember = $request->input('remember');
if (Auth::attempt(['email' => $email, 'password' => $password], $remember)) {
return redirect()->intended('dashboard');
}
}
public function index(){
return view('auth.login');
}
}
管理面板中的所有路由都在我的路由文件中的一个组内:
Route::middleware(['auth'])->group(function () {
//All of the admin routes here
});
登录路由受“guest”中间件保护,因此没有经过身份验证的用户可以访问登录表单 .
请让我发布您认为可能有用的任何代码,我对Laravel相当新,并且不知道要发布什么 .
1 回答
我解决了这个问题 . 这只是一个菜鸟的错误 . 我在链接的href属性中有
Auth::logout()
函数,认为当有人点击它时它会触发 . 相反,它会在页面加载后立即将我注销,这就是第一次有会话的原因 .