Joh*_*ohn 1 php oauth-2.0 laravel
我正在开发一个 laravel 后端来使用 Vue JS,并尝试实现用户注册。我已下载通行证以验证用户身份,但我无法准确了解新用户如何注册该网站。
从我所做的研究来看,您似乎希望为无需使用 Laravel 护照即可访问的注册创建路由,然后在创建用户后为其授予令牌。
一旦用户注册,我会使用个人授权令牌,隐式,还是使用护照 CreateFreshApiToken 中间件。
我应该将所有路由放在 web 还是 api 路由文件中?
您可以在您的 api 中创建一个任何人都可以注册新用户的路由,因此您不使用任何身份验证中间件,例如:
Route::post('users', 'AuthController@register'); // Signup
Run Code Online (Sandbox Code Playgroud)
并在您的控制器中使用相关方法:
/**
* 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)]);
}
Run Code Online (Sandbox Code Playgroud)
从这一点来看,您选择的护照 OAuth2 授权代码流的类型将影响您在消费者应用程序上的实现。
您可以选择经典的 OAuth2 流程,基本上您有以下步骤:
将消费者应用程序注册到 OAuth2 服务器并获取 Client Id 和 Secret
消费者应用程序使用 Client Id 和 Secret 向 OAuth2 服务器请求授权代码
显然,上面的每一步都是一个 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,
],
]);
Run Code Online (Sandbox Code Playgroud)
另一方面,您可能希望使用更简单的方法来检索访问令牌,避免使用Laravel 护照个人访问令牌的所有授权代码请求等。通过这种方式,您只需执行以下操作即可为用户颁发访问令牌:
$user = App\User::find(1);
// Creating a token without scopes...
$token = $user->createToken('Token Name')->accessToken;
Run Code Online (Sandbox Code Playgroud)
我鼓励您查看 Passport Laravel 文档并检查提供的所有可能性。