我有一个管理面板,可以通过用户身份验证进行保护。一旦我尝试访问它,它会将我重定向到使用“来宾”中间件的登录表单(这是预期的行为)。 尝试登录后,它就像一个超级按钮一样工作,将我重定向到管理控制台,并创建了Auth对象(我可以检索名称)。 但是,如果我单击面板内部的任何链接,或按F5键,它将把我重定向回登录表单。为了测试发生了什么,我从管理面板中删除了“身份验证”中间件保护,当我尝试检索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
});
登录路径受“来宾”中间件的保护,因此没有经过身份验证的用户可以访问登录表单。
请让我发布您认为可能有帮助的任何代码,我对Laravel还是陌生的,并且真的不知道要发布什么内容。
答案 0 :(得分:0)
我解决了这个问题。那只是一个菜鸟的错误。我在链接的href属性中使用了Auth::logout()
函数,以为它会在有人单击时触发。相反,它在页面加载后立即注销了我,这就是为什么第一次有一个会话。