Auth::attempt 不工作。拉拉维尔 4
Posted
技术标签:
【中文标题】Auth::attempt 不工作。拉拉维尔 4【英文标题】:Auth::attempt not working. Laravel 4 【发布时间】:2014-08-31 08:33:58 【问题描述】:我得到了下一个代码:
public function registrarUsu()
$datosregistro = array(
null,
"Carlos Delgado",
"Gonzalez Padron",
Input::get('username'),
Hash::make(Input::get('contrasena')),
);
$consulta = DB::insert('insert into usuarios (id, nombres, apellidos, nick_name, contrasena) values ( ?, ?, ?, ?, ?)', $datosregistro);
DB::commit($consulta);
这就是它的作用;从我早期创建的一个简单的登录表单中获取用户名和密码,它会执行它的工作,获取所有数据并将其保存到数据库中(静态字段仅用于演示)。问题是当我尝试使用下一个功能对用户进行身份验证时:
public function loguearUsu()
$datosdeusu = array(
'nick_name' => Input::get('username'),
'contrasena' => Input::get('Contrasena'),
);
if(Auth::attempt($datosdeusu))
return Redirect::to('/');
我认为问题出在密码上,每次我尝试登录时都会返回 false,但如果我使用 var_dump,它会显示数据库中的用户名和密码,那么我做错了什么?
【问题讨论】:
【参考方案1】:您可能需要更新您的用户模型,因为您使用的是非标准的密码字段。尝试将此添加到您的用户模型中。希望对您有所帮助。
public function getAuthPassword()
return $this->attributes['contrasena'];
【讨论】:
【参考方案2】: public function loguearUsu()
$datosdeusu = array(
'nick_name' => Input::get('username'),
'contrasena' => Input::get('Contrasena'),
);
if(Auth::attempt($datosdeusu))
return Redirect::to('/');
您在注册时的 Input::get('contrasena') 与登录不一样,请重新检查
无论如何你都可以使用它(如果输入是两个字段:用户名,密码)
if(Auth::attempt(Input::all()))
return Redirect::to('main');
【讨论】:
我刚刚这样做并给出了这个 sql 错误:“未找到列:1054 Unknown column '_token' in 'where 子句'(SQL: select * fromusuarios
where _token
= l7f9TJkDFHqbisqPWL2FVo0XPfLpfL0ORKTTGSW8 和username
= Juanpedroso 和 Contrasena
= qqqq 限制 1)" 并且通过查看 Auth 没有对我的通行证进行散列以将其与我数据库中的通行证进行比较:“$2y$10$On7q/pORrwWvfgN1QHoxze7Dl2e6t4KT6n8KY2JkkeFROVuGyUt1O”将“qqqq”与哈希值进行比较。
从 Laravel 4.1 开始,您需要在表上创建一个名为 remember_token 的列。在此处阅读更多信息,laravel.com/docs/upgrade#upgrade-4.1以上是关于Auth::attempt 不工作。拉拉维尔 4的主要内容,如果未能解决你的问题,请参考以下文章
拉拉维尔 | LinkedIn 和 Socialite - 不传递参数