【发布时间】:2016-05-17 06:19:34
【问题描述】:
我已经阅读了几十个类似的帖子,仍然无法使其工作。我总是收到“登录失败”消息。 这是我的用户表
CREATE TABLE users (
id int(10) unsigned NOT NULL,
first_name varchar(255) COLLATE utf8_unicode_ci NOT NULL,
last_name varchar(255) COLLATE utf8_unicode_ci NOT NULL,
slug varchar(255) COLLATE utf8_unicode_ci NOT NULL,
email varchar(255) COLLATE utf8_unicode_ci NOT NULL,
password varchar(255) COLLATE utf8_unicode_ci NOT NULL,
remember_token varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
created_at timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
updated_at timestamp NOT NULL DEFAULT '0000-00-00 00:00:00'
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
看到密码字段是 255,足够大以进行散列。
这是我的 App\Model\User 类
namespace App\Model;
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable
{
protected $fillable = ['name', 'email', 'password'];
protected $hidden = ['password', 'remember_token'];
}
这是登录控制器
namespace App\Http\Controllers\Backend;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Auth;
class MainController extends Controller
{
public function getLogin()
{
return view('backend.login');
}
public function postLogin(Request $request)
{
if (Auth::attempt([
'email' => $request->input('email'),
'password' => $request->input('password')
])) {
echo 'login successful'; exit();
}
else {
echo 'login failed'; exit();
}
}
}
数据库中的用户记录被插入,密码设置为
Crypt::encrypt('123456')
这给了我将近 200 个字符长的散列密码存储在数据库中(这正常吗?)
我的 config.app 文件说
'key' => env('APP_KEY'),
'cipher' => 'AES-256-CBC',
最后这是我的 config.auth 文件
return [
'defaults' => [
'guard' => 'web',
'passwords' => 'users',
],
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'token',
'provider' => 'users',
],
],
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\Model\User::class,
],
],
'passwords' => [
'users' => [
'provider' => 'users',
'email' => 'auth.emails.password',
'table' => 'password_resets',
'expire' => 60,
],
],
];
我试图从表单中转储 $request->input('email')/$request->input('password') ,一切都如预期的那样。 我试图转储查询日志,查询似乎是正确的('select * from users where email = ? limit 1,具有正确的电子邮件字段绑定)。
我还能检查什么? 有没有办法“深入检查” Auth::attempt to 检查那里出了什么问题?
任何帮助将不胜感激。
【问题讨论】:
标签: php authentication laravel-5