使用一个干净的Laravel5.2.14安装,添加迁移和种子文件,使用artisan make:auth添加auth脚手架,然后使用MySQL运行这个脚手架,最后登录到仪表板,但当我添加Duxet/RethinkDB时,更新迁移、种子和用户模型,并尝试登录它,不再重定向到/home,而是返回到/login。您可以在Chrome的网络选项卡中看到,/login获得302错误,/home获得302错误,并返回到/login,指示主路由中间件中的一个问题。
login 302 text/html
home 302 text/html
login 200 document不抛出任何异常或记录错误,但使用Monolog (/app/Http/Middleware/Authenticate)在Auth中间件中进行阻塞。语句Auth::guard($guard)->guest()总是返回1,指示用户是导致重定向的来宾,但它似乎是通过AuthController的AuthenticatesAndRegistersUsers子特征AuthenticatesUsers::login验证用户的身份。因此,单击导航中的home就可以重定向到登录,因为主中间件指示用户是来宾。
public function login(Request $request)
{
$this->validateLogin($request);
...
if (Auth::guard($this->getGuard())->attempt($credentials, $request->has('remember'))) {
Log::info('Successful Login!'); // Always gets here
return $this->handleUserWasAuthenticated($request, $throttles);
}
Log::info('Failed Login!'); // Never gets here
...如果我恢复到上一次只使用MySQL的提交,这一切都能工作,并且用户被重定向到仪表板。我一直在浏览web中间件组、auth中间件和AuthController特性,试图在没有运气的情况下解决这个问题。
有没有人遇到这种情况,并能指出一个潜在的解决方案?
发布于 2016-02-13 02:05:29
经过几个多小时的努力,我终于注意到了一个用户的ID,这个ID对于我所播种的用户数量来说太大了,而这个ID是被截断的UUID的整数部分。
出现这些问题的原因是Duxet/RethinkDB包是如何实现的,该包在为具有自动递增ID的典型迁移构建语句时不使用Laravel实现的Blueprint方法:
use duxet\Rethinkdb\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateUsersTable extends Migration {
public function up()
{
Schema::create('users', function(Blueprint $table) {
$table->increments('id'); // Won't be an auto-incrementing unsigned integer
...
});
}
...
}和种子:
use Illuminate\Database\Seeder;
class UserTableSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
// Developer accounts
factory(App\User::class, 'admin', 1)->create([
'username' => 'test',
'email' => 'test@test.com'
]);
}注意:我想指出的是,Duxet/RethinkDB包没有任何问题。当尝试在Laravel中实现它时,这只是一些需要注意的事情。
Duxet/RethinkDB使用一种简洁的方法来创建表,而不调用Laravel的API来处理向ID列分配无符号整数的方法。ReQL语句r.db('app').table('users')结果指示为ID列分配UUID,该ID列通常是Laravel自动递增的无符号整数。
{
"created_at": Fri Feb 12 2016 10:04:22 GMT+00:00 ,
"email": test@test.com, »
"id": "8bbc1c35-6be5-4b1f-87de-75eba1c459eb" ,
"password": "$2y$10$2f7QjuBCjEMr3R01ZNlwI.ft8v8FYs8IHRQzPI1lKdojIXtK7b9wO" ,
"role": "admin" ,
"updated_at": Fri Feb 12 2016 10:04:22 GMT+00:00 ,
"username": "test"
}为了克服set增量为false,这将阻止Laravel将UUID转换为PHP整数数据类型,这将截断UUID。我提交了一个PR来对Duxet/RethinkDB包做一些修改,以防止其他人不得不自己发现这一点。
https://stackoverflow.com/questions/35371050
复制相似问题