gpt4 book ai didi

php - 如果用户已经登录,则不要在注册后登录用户

转载 作者:搜寻专家 更新时间:2023-10-31 21:22:33 24 4
gpt4 key购买 nike

是的,你没有看错。让我解释。我正在使用 laravel 5.4 附带的默认身份验证过程,并希望允许管理员用户注册新用户。我已经修改了中间件 RedirectIfNotAuthenicated 以允许访问 /register 如果登录的用户是管理员(在我的例子中,这意味着他们的类型为“1”) :

public function handle($request, Closure $next, $guard = null)
{
if (Auth::guard($guard)->check()) {

if(!Auth::user()->type == '1'){
return redirect('/');
}

}

return $next($request);
}

我现在的问题是,如果帐户是由管理员创建的,在现有的 RegisterController 中,我如何在成功注册后不让用户登录。显然,这将涉及检查用户当前是否登录和管理员身份,但我被挂起的地方是在那个 block 之后,对我来说,它看起来像是在其他地方做的事情?

protected function create(array $data)
{

if(isset($data["director"])){
$this->redirectTo = '/organizations/create';
}

if(Auth::user()->type == '1'){

//create the user and not log them in

} else {

return User::create([
'first_name' => $data['first_name'],
'last_name' => $data['last_name'],
'email' => $data['email'],
'password' => bcrypt($data['password']),
]);

}

}

最佳答案

首先,您实际上不需要使用 Laravel 附带的 RegisterController 来创建管理员用户。无论您使用什么 AdminController,您都可以使用以下代码创建一个新用户,并正确验证原因:

User::create([
'first_name' => $data['first_name'],
'last_name' => $data['last_name'],
'email' => $data['email'],
'password' => bcrypt($data['password']),
]);

您只需将用户数据保存在相应的表中,一旦用户从前端登录,LoginController 将处理其余部分。

此外,Laravel 附带的 RegisterController 使用 RegistersUsers Trait,它具有您在 Controller 中注意到的附加功能。

Illuminate\Foundation\Auth\RegistersUsers.php

关于php - 如果用户已经登录,则不要在注册后登录用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43641976/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com