Php seeder创建的用户可以登录,注册用户不能

Php seeder创建的用户可以登录,注册用户不能,php,laravel,vue.js,Php,Laravel,Vue.js,我的Laravel/Vue应用程序有一个UserSeeder,在phpartisan migrate:refresh--seed命令期间生成几个管理员用户 /** * Seed users table */ public function run() { DB::table('users')->insert([ 'firstname' => 'Admin', 'lastname' => 'User', 'email'

我的Laravel/Vue应用程序有一个UserSeeder,在
phpartisan migrate:refresh--seed
命令期间生成几个管理员用户

/**
 * Seed users table
 */
public function run()
{
    DB::table('users')->insert([
        'firstname' => 'Admin',
        'lastname' => 'User',
        'email' => 'admin@user.com',
        'role' => 1,
        'password' => bcrypt('admin')
    ]);
}
访客可以通过Vue注册页面进行注册。提交注册后,使用以下代码将用户详细信息正确存储到数据库中,不会出现任何错误:

/**
 * Register a new user
 */
public function register(Request $request)
{
    $v = Validator::make($request->all(), [
        'firstname' => 'required|min:3',
        'lastname' => 'required|min:3',
        'email' => 'required|email|unique:users',
        'password'  => 'required|min:3|confirmed',
    ]);

    if ($v->fails()) {
        return response()->json([
            'status' => 'error',
            'errors' => $v->errors()
        ], 422);
    }

    $user = new User();
    $user->firstname = $request->firstname;
    $user->lastname = $request->lastname;
    $user->email = $request->email;
    $user->password = bcrypt($request->password);
    $user->role = 2;
    $user->save();

    return response()->json(['status' => 'success'], 200);
}
/**
 * Login user and return a token
 */
public function login(Request $request)
{
    $credentials = $request->only('email', 'password');
    if ($token = $this->guard()->attempt($credentials)) {
        return response()->json(['status' => 'success'], 200)->header('Authorization', $token);
    } else {
         return response()->json([
            'status' => 'error',
            'errors' => [
                'combination' => 'combination'
            ]
        ], 422);
    }
    return response()->json(['error' => 'login_error'], 401);
}

/**
 * Return auth guard
 */
private function guard()
{
    return Auth::guard();
}
注册后,用户应能够立即登录(无需进一步确认其帐户的激活)。与注册页面一样,登录页面位于Vue中,提交登录表单后,用户的电子邮件和密码用于使用以下代码对用户进行身份验证:

/**
 * Register a new user
 */
public function register(Request $request)
{
    $v = Validator::make($request->all(), [
        'firstname' => 'required|min:3',
        'lastname' => 'required|min:3',
        'email' => 'required|email|unique:users',
        'password'  => 'required|min:3|confirmed',
    ]);

    if ($v->fails()) {
        return response()->json([
            'status' => 'error',
            'errors' => $v->errors()
        ], 422);
    }

    $user = new User();
    $user->firstname = $request->firstname;
    $user->lastname = $request->lastname;
    $user->email = $request->email;
    $user->password = bcrypt($request->password);
    $user->role = 2;
    $user->save();

    return response()->json(['status' => 'success'], 200);
}
/**
 * Login user and return a token
 */
public function login(Request $request)
{
    $credentials = $request->only('email', 'password');
    if ($token = $this->guard()->attempt($credentials)) {
        return response()->json(['status' => 'success'], 200)->header('Authorization', $token);
    } else {
         return response()->json([
            'status' => 'error',
            'errors' => [
                'combination' => 'combination'
            ]
        ], 422);
    }
    return response()->json(['error' => 'login_error'], 401);
}

/**
 * Return auth guard
 */
private function guard()
{
    return Auth::guard();
}

奇怪的是,UserSeeder创建的用户可以通过登录表单登录,但在使用注册表单后尝试登录的用户会收到电子邮件/密码组合错误。

首先,我会检查前端键入的密码是否到达控制器。
=>检查$request->密码
您还可以在php artisan tinker控制台中尝试
bcrypt('passwordUsedInFrontend')
,并检查这是否与数据库中的相同。
似乎是一项调试工作。

一个
角色
-可能是什么?很遗憾不是,但谢谢你的建议!不幸的是,注册和登录方法中填写的电子邮件和密码是相同的。bcrypt结果的不同正是bcrypt应该如何工作。e、 g.bcrypt字符串“test”多次,结果是不同的字符串。因此,即使哈希值不同,密码匹配也不会失败。您可以使用hash::check(requestPasswordPlain,hashFromDatabase)检查密码是否正确,请参阅。如果密码工作正常,唯一的区别就是角色,对吗?