Laravel API注册

时间:2018-04-20 15:26:36

标签: php laravel oauth-2.0

我正在开发一个laravel后端来与Vue JS合作,并尝试实现用户注册。我已下载护照以验证用户身份,但我无法确切了解新用户如何注册该网站。

根据我所做的研究,您似乎想要为不需要使用laravel护照就可以访问的注册建立路径,然后在创建用户后为其授予令牌。

用户注册后我是否会使用个人授权令牌,隐式或使用护照CreateFreshApiToken中间件。

我应该将所有路由放在网页还是api路由文件中?

1 个答案:

答案 0 :(得分:1)

您可以在api中创建一条路线,任何人都可以在其中注册新用户,因此您不使用任何身份验证中间件,例如:

Route::post('users', 'AuthController@register'); // Signup

并在您的控制器中使用相关方法:

/**
 * API Register
 *
 * @param Request $request
 * @return \Illuminate\Http\JsonResponse
 */
public function register(Request $request)
{
    $rules = [
        'name' => 'unique:users|required',
        'email'    => 'unique:users|required',
        'password' => 'required',
    ];

    $input     = $request->only('name', 'email','password');
    $validator = Validator::make($input, $rules);

    if ($validator->fails()) {
        return response()->json(['success' => false, 'error' => $validator->messages()]);
    }
    $name = $request->name;
    $email    = $request->email;
    $password = $request->password;
    $user     = User::create(['name' => $name, 'email' => $email, 'password' => Hash::make($password)]);

}

从这一点来看,您选择的护照OAuth2授权代码流的类型将影响您在消费者应用上的实施。

您可以选择经典的OAuth2流程,基本上您可以执行以下步骤:

  1. 将消费者应用程序注册到OAuth2服务器并获取客户端ID和密钥

  2. 消费者应用程序使用客户端ID和密钥向OAuth2服务器请求授权代码

  3. 获得授权代码后,消费者应用程序现在可以向OAuth2服务器请求访问令牌
  4. 消费者应用程序现在可以访问Api,在服务器的每个请求中使用它在标头请求中发送的访问令牌。
  5. 显然,上面的每一步都是HTTP请求,您的操作方式取决于您在使用者应用程序中使用的技术。

    例如在php中,你可以使用Guzzle并发送一个访问令牌请求,如下所示:

     $http = new \GuzzleHttp\Client;
    
        $response = $http->post('http://yourserver.com/oauth/token', [
            'form_params' => [
                  'grant_type' => 'authorization_code',
                  'client_id' => 'client-id',
                  'client_secret' => 'client-secret',
                  'redirect_uri' => 'http://example.com/callback',
                  'code' => $request->code,
            ],
        ]);
    

    另一方面,您可能希望使用更简单的方法来检索访问令牌,避免使用Laravel passport Personal Access Tokens的所有授权代码请求等。通过这种方式,您可以为用户发出访问令牌:

    $user = App\User::find(1);
    
    // Creating a token without scopes...
    $token = $user->createToken('Token Name')->accessToken;
    

    我建议您查看Passport Laravel文档并检查所提供的所有可能性。