【发布时间】:2015-12-14 09:58:54
【问题描述】:
我已经在寻找与此相关的问题,但尚未解决。
- Auth::attempt() 成功
- Auth::attempt() 成功后尝试注册会话
- users 表中的remember_token 字段始终为空
这是我的代码:
AuthController:
protected function login(Request $request){
$result = [];
$rules = ['email' => 'required|email', 'password' => 'required|alphaNum|min:3'];
$validator = Validator::make($request->all(), $rules);
if($validator->fails()) {
$result['message'] = 'Login Failed';
}else{
$userdata = ['email' => $request->email, 'password' => $request->password];
if (Auth::attempt($userdata, $request->has('auth_remember'))) {
// dd(Auth::user()); << THIS DATA IS EXIST
// $request->session()->push('user.id', Auth::user()->id);
// $request->session()->push('user.name', Auth::user()->name);
// $request->session()->push('user.email', Auth::user()->email);
// dd($request->session()->all()); << THIS DATA IS EXIST
$result['message'] = 'Login successfull. Redirecting ...';
}else{
$result['message'] = 'User not found';
}
}
echo json_encode($result);
}
我去http://.../dashboard时有一个中间件Auth,但是...
- Auth::check() 返回 false
- $request->session()->has('user') 返回 false
认证中间件:
public function handle($request, Closure $next){
if($this->auth->viaRemember()) return $next($request);
if($this->auth->guest()){
if($request->ajax()){
return response('Unauthorized.', 401);
}else{
return redirect()->guest('login');
}
}
return $next($request);
}
- 存储/框架/会话已设置为 777
- 文件会话已生成
- 应用时区已与服务器设置和数据库设置匹配
任何帮助将不胜感激。
【问题讨论】:
-
我现在也有同样的问题。我怀疑
user表及其字段 -id、username、password是否可能是问题所在。我试图修改SessionGuard::user()函数,但似乎会话是空的。会话有名字,但是/storage/framework/sessions 下没有这样的文件。这个问题没人解决吗? -
我解决了这个问题。
user表及其字段 -id、username、password是问题所在。尝试根据您的数据库更改User模型的$primaryKey和$table。
标签: php session authentication laravel-5.1