我试图按照this问题中的建议覆盖Laravel 5中的注册功能。但是,在我的情况下,我并没有尝试从注册页面重定向用户。相反,我只想注册新用户但保持当前(管理员)用户登录。默认功能验证然后登录新用户,然后重定向到" home"。所以,这是我尝试添加到AuthController.php:
// OVERRIDE FUNCTION IN AuthenticatesAndRegistersUsers (located under /Illuminate/Foundation/Auth)
public function postRegister(Request $request) {
$validator = $this->registrar->validator($request->all());
if ($validator->fails())
{
$this->throwValidationException(
$request, $validator
);
}
//$this->auth->login($this->registrar->create($request->all()));
$this->registrar->create($request->all());
return redirect('admin');
}
我以为我很聪明,只是创建新帐户,然后将当前用户重定向到管理页面。但是,没有创建用户并且没有发生重定向。任何想法都会非常感激!
答案 0 :(得分:1)
如果我是你,我宁愿在我的模型中使用“创建”静态方法,例如:对于注册,我使用“用户”模型,然后我只需使用:
User::create($data = array());
它只会将数据存储到User模型中的表中。然后简单地说:
return redirect('admin');
新用户不会登录该站点。它只是将数据存储到数据库中的表中。
答案 1 :(得分:1)
看看artisan rout:list,在哪里调用postRegister?
您需要覆盖寄存器功能。
答案 2 :(得分:0)
我想我找到了答案(就我而言)。 我复制了注册功能,却忘记了删除电子邮件中已确认的确认
答案 3 :(得分:0)
您可能要更改的另一种默认行为是在注册表格后立即自动登录。您可能需要将用户重定向到单独的“成功”页面,并希望他们稍后手动登录。
为此,您需要覆盖特征RegistersUsers的register()方法。
我们上面讨论的控制器RegisterController使用了这一重要特性:
class RegisterController extends Controller
{
use RegistersUsers;
// ... all other code of controller
This trait performs all the “dirty work” of registration. It is part of the core
framework, located in
vendor/laravel/framework/src/Illuminate/Foundation/Auth/RegistersUsers.php:
trait RegistersUsers
{
/**
* Handle a registration request for the application.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function register(Request $request)
{
$this->validator($request->all())->validate();
event(new Registered($user = $this->create($request->all())));
$this->guard()->login($user);
return $this->registered($request, $user)
?: redirect($this->redirectPath());
}
// ... A few other methods
}
要禁用自动登录,您需要删除以下特定行:
$this->guard()->login($user);
但是您不能直接编辑Laravel core或/ vendor内部的任何部分。您可以做的是重写相同的方法,并将其放入RegisterController中,如下所示:
namespace App\Http\Controllers\Auth;
// DON'T FORGET TO ADD THESE TWO!
use Illuminate\Http\Request;
use Illuminate\Auth\Events\Registered;
use App\User;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Validator;
use Illuminate\Foundation\Auth\RegistersUsers;
class RegisterController extends Controller
{
// ... Other methods
/**
* Handle a registration request for the application.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function register(Request $request)
{
$this->validator($request->all())->validate();
event(new Registered($user = $this->create($request->all())));
return $this->registered($request, $user)
?: redirect($this->redirectPath());
}
}
最后,请注意上一节中提到的redirectTo参数或方法,这样您的注册用户将进入正确的页面。