向Laravel Passport注册用户 [英] Registering User with Laravel Passport
问题描述
我设置了密码授予(它是应用程序的后端).现在,我可以向oauth/token
发送发帖请求,它可以在Postman上使用.但是,如果我也想从api注册用户怎么办?
I set up password grant (it's backend for an app). Now, I can send a post request to oauth/token
and it works on Postman. However, what if I want to register user from the api too?
我了解我可以使用当前的/register
路由,但是,我是否需要将用户重定向回登录页面,然后他使用其凭据再次登录?
I understand I can use current /register
route, however, then will I need to redirect the user back to the login page and he logs in again with his credentials?
还是在RegisterController中的registered()
函数中,我应该重定向到oauth/token
路由吗? (为此,请注意,我正在以"x-www-form-urlencoded"发送所有5个数据,并且似乎可以正常工作.但是,我是否需要在标头中分隔一些数据?对我来说这很模糊,所以只需要问我何时有机会.
Or in the RegisterController, in registered()
function, should I do I redirect to the oauth/token
route? (For this, please note that I am sending, all the 5 data in 'x-www-form-urlencoded' and it seems to work. However, do I need to separate some in headers? It's blurry for me, so just wanted to ask when I have the chance).
Or should I add something in the oauth/token
method like this guy? Actually, I tried to catch the posted $request
data on AccessTokenController@issueToken
method inside library, however I couldn't figure out how to manipulate the parsedBody
array. If I trigger my register function from the actual library, how would I know if it's register or login?
也许我错过了一些信息,但是基于此主题我什么也找不到.在Passport中处理注册用户的正确方法是什么?
Maybe I am missing out some information, but I couldn't find anything based on this topic. What is the proper way of handling registering user in Passport?
更新:接受的答案显示注册"周期;在其下方,我添加了登录"和刷新令牌"实现.希望对您有所帮助:)
Update: Accepted answer shows the 'register' cycle; and below it I have added 'login' and 'refresh token' implementations. Hope it helps :)
推荐答案
在您的API中创建路由为
In your API create route as
Route::post('register','Api\UsersController@create');
然后在UsersController中创建方法create()
And in UsersController create method create()
function create(Request $request)
{
/**
* Get a validator for an incoming registration request.
*
* @param array $request
* @return \Illuminate\Contracts\Validation\Validator
*/
$valid = validator($request->only('email', 'name', 'password','mobile'), [
'name' => 'required|string|max:255',
'email' => 'required|string|email|max:255|unique:users',
'password' => 'required|string|min:6',
'mobile' => 'required',
]);
if ($valid->fails()) {
$jsonError=response()->json($valid->errors()->all(), 400);
return \Response::json($jsonError);
}
$data = request()->only('email','name','password','mobile');
$user = User::create([
'name' => $data['name'],
'email' => $data['email'],
'password' => bcrypt($data['password']),
'mobile' => $data['mobile']
]);
// And created user until here.
$client = Client::where('password_client', 1)->first();
// Is this $request the same request? I mean Request $request? Then wouldn't it mess the other $request stuff? Also how did you pass it on the $request in $proxy? Wouldn't Request::create() just create a new thing?
$request->request->add([
'grant_type' => 'password',
'client_id' => $client->id,
'client_secret' => $client->secret,
'username' => $data['email'],
'password' => $data['password'],
'scope' => null,
]);
// Fire off the internal request.
$token = Request::create(
'oauth/token',
'POST'
);
return \Route::dispatch($token);
}
在创建新用户之后,返回访问令牌.
And after creating new user, return access token.
这篇关于向Laravel Passport注册用户的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!