在laravel 5中,我使用默认注册方法为api创建用户。成功注册后的默认行为是重定向到“/ home”。
curl --data @formdata -k https://foo.bar.com/auth/register
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<meta http-equiv="refresh" content="1;url=https://foo.bar.com/home"
/>
<title>Redirecting to https://foo.bar.com/home</title>
</head>
<body>
Redirecting to <a href="https://foo.bar.com/home">https://foo.bar.com/home</a>.
</body>
</html>
我想要返回JSON信息,而不是重定向,例如
{ "Message" : "Success" }
目前我不知道在哪里配置它。我试图在Register方法中返回它。但这并没有改变这种行为。
class Registrar implements RegistrarContract {
// ...
/**
* Create a new user instance after a valid registration.
*
* @param array $data
* @return User
*/
public function create(array $data)
{
return User::create([
'name' => $data['name'],
'email' => $data['email'],
// ...
]);
return ["Message" => "Success];
}
}
此外,我发现了很多信息来改变重定向路径,但不是如何更改返回输出。
如何在成功注册后返回json信息,而不是重定向?
答案 0 :(得分:1)
只需覆盖postRegister()
中的AuthController
方法:
public function postRegister(Request $request)
{
$validator = $this->registrar->validator($request->all());
if ($validator->fails()) {
return view('auth/register')->withErrors($validator->errors());
}
Auth::login($this->create($request->all()));
return response()->json(["Message" => "Success"]);
}