用json输出注册后替换重定向

时间:2015-05-19 17:00:15

标签: php json authentication laravel laravel-5

在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方法中返回它。但这并没有改变这种行为。

应用程序/服务/ Registrar.php

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信息,而不是重定向?

1 个答案:

答案 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"]);
}