我在Larave中使用手动身份验证,这是我的代码功能
public function doLogin(){
// create our user data for the authentication
$userdata = array(
'username' => Input::get('username'),
'password' => Input::get('password')
);
// attempt to do the login
if (Auth::attempt($userdata,true)) {
return (Auth::check() ? 'true' : 'false');
}
else {
// validation not successful, send back to form
return (Auth::check() ? 'true' : 'false');
}
}
登录后,Auth::check
返回true。但浏览到具有此构造函数的受保护路由后
public function __construct()
{
$this->middleware('auth');
}
即使在登录后,中间件也会再次将我重定向到登录页面。
Auth
中间件从未被修改过。我需要做哪些修改吗?
我也尝试过自定义中间件:
class LoginCheck
{
public function handle($request, Closure $next)
{
if (!Auth::check()) {
if ($request->ajax() || $request->wantsJson()) {
return response('Unauthorized.', 401);
} else {
return redirect('login');
}
}
return $next($request);
}
}
仍然无效,意味着Auth :: check()正在返回false
。
Cookie配置为存储会话,但仍然无效。
答案 0 :(得分:0)
这很奇怪,但是......
我创建了一个新的Laravel项目。复制了所有MVC和路由(仅限于此),但不包括auth
的所有内容。然后我做了php artisan make:auth
,它有效,我完全不知道为什么。
好像我一定是搞错了。
顺便说一句,感谢所有的帮助!