我已经在寻找与此相关的问题,但尚未解决。
链接1,链接2,链接3
- Auth::attempt() is success
- 尝试在Auth::attempt()成功后注册会话
- users表上的memor_token字段总是null
这是我的代码:
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);
}
我有一个中间件Auth当我去http://.../dashboard,但是…
- Auth::check()返回false
- $request->session()->has('user') return false
Auth中间件:
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);
}
- storage/framework/session已设置为777
- 文件会话生成
- app时区已经与服务器设置和数据库设置匹配
为什么要手动添加用户数据到会话中,用户可以在任何时候使用Auth::user()
获取用户数据
删除以下行:
$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)验证auth_remember
我想我解决了这个问题。
使用Ajax时,Laravel身份验证不起作用。只要遵循http://laravel.com/docs/5.1/authentication的文档,一切都应该工作!
但这很奇怪!使用ajax的身份验证在我的本地主机上工作得很好,但当我将其上传到服务器时却没有。