首页 > 解决方案 > 成功创建帐户后,Laravel 不会发送响应

问题描述

我可以很好地将数据保存到数据库中。然后我在创建后立即使用电子邮件登录该当前用户。但它总是会发送请求。这里可能有什么问题?

类 RegisterController 扩展控制器 { 使用 AuthenticatesUsers;

protected $redirectTo = '/home';

private $loginProxy;


public function __construct(LoginProxy $loginProxy)
{
    $this->loginProxy = $loginProxy;
    $this->middleware('guest')->except('logout');
}

function apiRegisterUser(Request $request)
{
    $validator = Validator::make($request->all(), [
        'name'     => 'string|max:255',
        'email'    => 'required|string|email|max:255|unique:users',
        'password' => 'required|string|min:6',
    ]);
    if ($validator->fails()) {
        return response()->json(array('code' => 406, 'error' => $validator->messages()), 406);
    } else {
        // Log::channel('abuse')->info('user');
        
        $user = User::create(['name'     => $request['name'],
                              'email'    => $request['email'],
                              'password' => Hash::make($request['password']),
                              'referral_code' => str_random(10)
        ]);
        
        $user->updateLastRoute(1);
        $credentials = $this->loginProxy->attemptLogin($request['email'], $request['password']);

        return response()->json($this->successResponse(200, "Login successfull", $credentials), 200);
    }
}


protected function validator(array $data)
{
    return Validator::make($data, [
        'name'     => 'required|string|max:255',
        'email'    => 'required|string|email|max:255|unique:users',
        'password' => 'required|string|min:6|confirmed',
    ]);
}


protected function create(array $data)
{
    return User::create([
        'name'     => $data['name'],
        'email'    => $data['email'],
        'password' => Hash::make($data['password']),
    ]);
}

}

标签: phplaravel

解决方案


使用auth()->attempt()我不确定的功能,loginProxy 但这auth()->attempt()应该可以

$credentials = [
    "email" => $request['email'],
    "password" => $request['password']
];

if (auth()->attempt($credentials)) {
    return response()->json($this->successResponse(200, "Login successfull", $credentials), 200);
}

推荐阅读