我试图在laravel 5.1中实现构建的用户身份验证/注册,但它会重定向到/ home。
继承路线:
Route::post('sign_up' , 'Auth\AuthController@postRegister');
表格
<form method="POST" action="http://localhost:8000/sign_up" accept-charset="UTF-8" class="form-horizontal">
postRegister函数被注释掉,所以它不应该去任何地方:
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($this->redirectPath());
}
}
答案 0 :(得分:1)
请注意,真实逻辑发生在AuthenticatesUsers
特征中,该特征位于Illuminate\Foundation\Auth
命名空间中。
如果你打开它,你会注意到负责方法loginPath()
检查是否存在loginPath
属性,该属性负责重定向回登录路径/视图。
要更改重定向流程,请将此属性添加到AuthController.php
:
protected $loginPath = "/"; // redirect to where you want
或许您想要在postRegister()
角色或其他条件下重定向,您可能会像下面的代码那样做,这是肮脏的道路或让我们说不利用Laravel 5.1 new {{3功能:
/**
* 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
);
}
// Change your loginPath here if you want: $this->loginPath = "/";
Auth::login($this->create($request->all()));
return redirect($this->redirectPath());
}
值得一提的是,在成功登录尝试后,其他并行属性$redirectTo
用于重定向到,您可以将其添加到authController.php
,即:您应该再次使用策略将管理员重定向到仪表板,也可以将普通用户重定向到个人资料或家庭!
protected $redirectTo = "dashboard";
小调整
你可能想要将链接更改为动态,所以请在表单中填写如下:
<form method="POST" action="{{ action('Auth\AuthController@postRegister') }}" accept-charset="UTF-8" class="form-horizontal">