laravel Auth::check() 失败
Posted
技术标签:
【中文标题】laravel Auth::check() 失败【英文标题】:laravel Auth::check() fails 【发布时间】:2014-11-19 10:20:08 【问题描述】:Auth::check() 在 Auth:attempt() 成功后失败。我只是按照 laracast.com 教程进行简单的身份验证。本具体教程https://laracasts.com/series/laravel-from-scratch/episodes/15。因此,要么在 4 到 5 个版本之间进行了轻微更改,要么我做错了什么。
这是一个执行身份验证的函数,第二个执行检查。两人同班。
public function store()
$credentials = Input::only('user_displayname');
$credentials['password'] = Input::get('user_password');
if (Auth::attempt($credentials))
return Auth::user();
return 'not logged';
public function status()
return dd(Auth::check());
这是用户模型:
class User extends Eloquent implements UserInterface, RemindableInterface
use UserTrait, RemindableTrait;
protected $table = 'user';
protected $hidden = array('user_password', 'remember_token');
protected $fillable = ['user_displayname', 'user_fname', 'user_lname', 'user_email', 'user_password'];
public $errors;
public static $rules = array(
'user_displayname' => 'required|unique:user,user_displayName',
'user_fname' => 'required',
'user_lname' => 'required',
'user_email' => 'required|unique:user,user_email',
'user_password' => 'required'
);
public function isValid($data)
$validation = Validator::make($data, static::$rules);
if ($validation->passes()) return true;
$this->errors = $validation->messages();
public function getAuthPassword()
return $this->user_password;
第二个问题。身份验证是使用 laravel Sessions 还是完全不同的东西?
编辑:
Auth 是否有租用时间或类似的东西,只是在时间到期后删除会话?与计算机相比,我的数据库列“updated_at”和“created_at”也给出了错误的时间。所以我在想,如果 Auth 正在检查某种时间,它可能会因为时间错误而总是失败。
P.S 已经查看了 *** 中的其他解决方案。
谢谢
【问题讨论】:
看起来更像是一个会话问题。要回答您的第二个问题 - 使用,身份验证使用 Laravel 会话。 是您的 id 列id
或 user_id
- 从查看您的代码我猜您已将其称为 user_id
?应该是id
我开始认为会话配置可能存在问题。是否有比会话生命周期更多的设置可以测试?我尝试更改“config/session.php”的生命周期,没有影响。还尝试将 user_id 更改为 id。也没有。
您使用什么会话驱动程序?
不确定我到底做了什么,但现在可以了。
【参考方案1】:
看起来像 Auth::attemp() 的参数;正在有效地尝试使用它。
public function store()
$credentials = array('user_displayname'=>Input::get('user_displayname'),
'user_password'=> Input::get('user_password'));
if (Auth::attempt($credentials))
return Auth::user();
return 'not logged';
【讨论】:
不,事实并非如此,你的例子是错误的。阅读:***.com/questions/26002552/…【参考方案2】:我认为 Laravel 有一个错误。如果您使用 Auth::attempt 验证您的凭据,则返回 true 并“销毁会话”。所以我们重定向我们的 url 并使用 Auth::check() 所以它返回 false。因为会话被破坏并且您丢失了要检查的数据。
【讨论】:
【参考方案3】:我看到你已经从这个开始了,但另一点是 laravel 非常严格地保持你的数据库表是复数(用户)和模型单数(用户)。我看到您在模型中明确将表声明为用户,但可能会与 laravel 产生一些混淆。
【讨论】:
以上是关于laravel Auth::check() 失败的主要内容,如果未能解决你的问题,请参考以下文章
异常页面(布局)上的 Laravel 5.2 Auth::check()
Laravel 5 - 在视图中使用 Auth::check()