php Laravel API注册

eqzww0vc  于 5个月前  发布在  PHP
关注(0)|答案(1)|浏览(48)

我正在开发一个laravel后端来使用Vue JS,并试图实现用户注册。我已经下载了passport来验证用户,但我很难理解新用户如何注册网站。
从我所做的研究来看,似乎你想为注册创建一个可以在不使用laravel passport的情况下访问的路由,然后一旦创建了用户,就授予它一个令牌。
一旦用户注册,我会使用个人授权令牌,隐式,或使用护照验证FreshApiToken中间件。
我应该把我所有的路由放在web或API路由文件中吗?

6za6bjd0

6za6bjd01#

你可以在你的API中创建一个路由,任何人都可以注册一个新用户,所以不要使用任何认证中间件,例如:

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

字符串
在你的控制器中,相关的方法:

/**
 * API Registerx
 *
 * @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)]);
    
}


从这一点来看,您选择的passport OAuth2授权代码流的类型将影响您在消费者应用程序上的实现。
你可以选择经典的OAuth2流程,基本上你有以下步骤:
1.将使用者应用程序注册到OAuth2服务器并获取客户端ID和Secret
1.使用者应用程序使用客户端ID和Secret向OAuth2服务器请求授权代码
1.一旦获得授权代码,使用者应用程序现在就可以向OAuth2服务器请求访问令牌
1.消费者应用程序现在可以访问API,在对服务器的每个请求中使用它在头部请求中发送的访问令牌。
显然,上面的每一步都是一个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个人访问令牌。这样,你可以为用户颁发访问令牌,只需做:

$user = App\User::find(1);

// Creating a token without scopes...
$token = $user->createToken('Token Name')->accessToken;


我鼓励你看看护照Laravel文档,并检查提供的所有可能性。

相关问题