Php 如何在Laravel中手动登录用户?
这是我的密码:Php 如何在Laravel中手动登录用户?,php,laravel,login,Php,Laravel,Login,这是我的密码: public function register_and_login(Request $request) { $this->validator_short($request->all())->validate(); $user = User::where('cell_phone', $request->cell_phone)->first(); // already registered if ( is_null(
public function register_and_login(Request $request)
{
$this->validator_short($request->all())->validate();
$user = User::where('cell_phone', $request->cell_phone)->first();
// already registered
if ( is_null($user) ) {
$user_id = User::create([
'name' => $request->name,
'cell_phone' => $request->cell_phone,
'password' => bcrypt($request->password),
]);
} else {
$user_id = $user->id;
}
$this->guard()->login($user_id);
dd('user is logged in now');
}
我的代码在用户尚未注册并且我们创建了它的情况下工作。但当他已经注册时,我的代码会抛出以下错误:
如何修复它?确保
用户
模型扩展可验证
:
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable
另外,使用auth()
helper或auth::
facade:
$user = User::create(['name' => $request->name,
'cell_phone' => $request->cell_phone,
'password' => bcrypt($request->password)
]);
auth()->login($user);
确保
用户
型号扩展了可验证性
:
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable
另外,使用auth()
helper或auth::
facade:
$user = User::create(['name' => $request->name,
'cell_phone' => $request->cell_phone,
'password' => bcrypt($request->password)
]);
auth()->login($user);
将您的else部分更改为-
else {
$user_id = $user;
}
将您的else部分更改为-
else {
$user_id = $user;
}
登录函数不是要求您输入整数id,而是要求输入可验证的id。在任何默认的Laravel应用程序中,这通常是用户模型 问题在于你的else陈述。检查单元格编号时,不需要将$user\u id设置为加载的用户的id。您只需要使用您加载的用户。根据您的逻辑,您甚至不需要else语句 逻辑中可能存在的另一个问题是,您正在检查单元号是否存在,如果存在,则登录该用户,而不是您进行检查的用户。这可能是人们想要的行为,但似乎不是
public function register_and_login(Request $request)
{
$this->validator_short($request->all())->validate();
$user = User::where('cell_phone', $request->cell_phone)->first();
// already registered
if ( is_null($user) ) {
$user = User::create([
'name' => $request->name,
'cell_phone' => $request->cell_phone,
'password' => bcrypt($request->password),
]);
}
$this->guard()->login($user);
}
登录函数不是要求您输入整数id,而是要求输入可验证的id。在任何默认的Laravel应用程序中,这通常是用户模型 问题在于你的else陈述。检查单元格编号时,不需要将$user\u id设置为加载的用户的id。您只需要使用您加载的用户。根据您的逻辑,您甚至不需要else语句 逻辑中可能存在的另一个问题是,您正在检查单元号是否存在,如果存在,则登录该用户,而不是您进行检查的用户。这可能是人们想要的行为,但似乎不是
public function register_and_login(Request $request)
{
$this->validator_short($request->all())->validate();
$user = User::where('cell_phone', $request->cell_phone)->first();
// already registered
if ( is_null($user) ) {
$user = User::create([
'name' => $request->name,
'cell_phone' => $request->cell_phone,
'password' => bcrypt($request->password),
]);
}
$this->guard()->login($user);
}
用户
模型与您描述的完全相同。另外,我添加了use-illumb\Foundation\Auth\RegistersUsers代码>在我的控制器顶部。我想这个错误很可能是因为it@MartinAJ如果您更改了登录名($user\u id)代码>至->登录($user)代码>如我所示,并且用户
模型扩展了可验证性
,这将起作用。如果您在这些更改后收到错误消息,那么肯定是另一个错误消息。请拿出来,我没有发现任何错误。但是登录没有发生。auth()->login($user)的结果
为null
@MartinAJ请尝试执行auth()->登录($user,true)
并将dd(auth()->user())
放在此行之后。如果用户经过身份验证,它将向您显示User
对象;如果用户未通过身份验证,它将向您显示null
。User
模型与您描述的完全相同。另外,为了供您参考,我添加了use-illumb\Foundation\Auth\RegistersUsers代码>在我的控制器顶部。我想这个错误很可能是因为it@MartinAJ如果您更改了登录名($user\u id)代码>至->登录($user)代码>如我所示,并且用户
模型扩展了可验证性
,这将起作用。如果您在这些更改后收到错误消息,那么肯定是另一个错误消息。请拿出来,我没有发现任何错误。但是登录没有发生。auth()->login($user)的结果
为null
@MartinAJ请尝试执行auth()->登录($user,true)
并将dd(auth()->user())
放在此行之后。如果用户经过身份验证,它将向您显示User
对象;如果用户未通过身份验证,它将向您显示null
。没有任何更改您是否已更改为$User\u id=$User
?没有任何更改您是否已更改为$User\u id=$User
??