我试图通过遵循this问题中的建议来覆盖Laravel 5中的注册函数。然而,在我的例子中,我并没有试图从注册页面重定向用户。相反,我只想注册新用户,但保持当前(admin)用户登录。默认功能验证然后登录新用户,然后重定向到"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');
}我认为我很聪明,只是创建了一个新帐户,然后将当前用户重定向到一个管理页面。但是,没有创建用户,也没有发生重定向。如果有任何想法,我们将不胜感激!
发布于 2015-04-13 14:08:52
如果我是你,我宁愿在我的模型中使用"create“静态方法,例如:对于注册,我使用"User”模型,然后我只需简单地使用:
User::create($data = array());它只是将数据存储到用户模型中的表中。然后简单地说:
return redirect('admin');并且新用户将不会登录到该站点。它只是将数据存储到数据库表中。
发布于 2017-02-08 06:31:47
看一下artisan rout:list,postRegister在哪里被调用?
您需要覆盖注册函数。
发布于 2019-09-16 12:15:01
您可能想要更改的另一个默认行为是在注册表单之后立即自动登录。您可能希望将用户重定向到一个单独的“成功”页面,并期望他们稍后手动登录。
为此,需要重写特征寄存器的RegistersUsers ()方法。
我们上面讨论的控制器,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核心,也不能编辑/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参数或方法,如上一篇技巧所示,这样您的注册用户才能登录到正确的页面。
https://stackoverflow.com/questions/29597848
复制相似问题