我正在使用标准的laravel注册和登录页面。我试图弄清楚如何在用户注册后添加重定向。在我的AuthController下,我发现我可以执行以下操作:
protected $redirectPath = '/interest';
然而,当他们登录时,这会重定向我的用户。我只想在用户注册帐户后拥有此功能。我怎么能这样做?
答案 0 :(得分:0)
我假设您使用 AuthenticatesAndRegistersUsers 特征或 AuthenticatesUsers 和 RegistersUsers 特征。这是你得到这种行为的情况之一。
用户被重定向到 / interest 的原因是因为身份验证和注册过程都使用相同的 redirectPath()方法来确定应该重定向用户的URL以及使用控制器的 $ redirectPath 属性。
一个选项可能是覆盖 redirectPath()方法并返回不同的路径,具体取决于用户是否经过身份验证(登录后)(注册后)。不幸的是对于这些特征不起作用,因为Laravel的注册过程会自动验证新注册的用户。
这个问题的最简单解决方案是将注册和身份验证分成两个独立的控制器。他们每个人都有自己的 $ redirectPath 属性。
答案 1 :(得分:0)
AuthController正在使用AuthenticatesAndRegistersUsers特性,因为它是一个特征,你可以覆盖这些方法,这样你就可以将postRegister放在你的AuthController中并重定向到你需要的地方,就像这样。
/**
* Handle a registration request for the application.
*
* @param \Illuminate\Http\Request $request
*
* @return \Illuminate\Http\Response
*/
public function postRegister(Request $request)
{
$validator = $this->validator($request->all());
if ($validator->fails()) {
$this->throwValidationException(
$request, $validator
);
}
Auth::login($this->create($request->all()));
return redirect()->route('name_of_the_route');
}
这将授权您的新用户并将其重定向到您指定的路由,并且仅影响注册而不影响身份验证,如果您不想授权新用户,则可以更改Auth::login($this->create($request->all()));
行这个$this->create($request->all());