laravel - restapi 中的 laravel 身份验证
问题描述
我的代码如下。
我面临问题。当我想通过username
and进行检查时password
。
password
每次都改变。所以我无法给出结果email password
。
public function login()
{
$data = Input::all();
print_r($data);
$email= $data['email'];
$password= bcrypt($data['password']);
echo $password;
$count = User::where('email', '=',$email);
$count->Where('password', '=', $password);
$count_row=$count->get()->count();
echo $count_row; die;
if($count_row==1)
{
$users = User::where('email', '=',$email);
$users->Where('password', '=', $password);
$users->select(
'id','name','email',
'username','address','zip',
'city','country','phone_number',
'domain','type') ;
$result=$users->get();
$response= response()->json(['success'=>true,'message'=>'success', 'data'=>$result]);
return $response;
}
else
{
$response= response()->json(['success'=>false,'message'=>'Not Login successfull']);
return $response;
}
}
解决方案
根据文档,验证密码的正确方法是
Hash::check('plain-text', $hashedPassword)
所以你可以将你的函数重写为
public function login()
{
$email = Input::get('email');
$user = User::where('email', '=', $email)->first();
if (!$user) {
return response()->json(['success'=>false, 'message' => 'Not Login successfull']);
}
if (!Hash::check(Input::get('password'), $user->password)) {
return response()->json(['success'=>false, 'message' => 'Not Login successfull']);
}
return response()->json(['success'=>true,'message'=>'success', 'data' => $user]);
}
或者更简单
public function authenticate(Request $request)
{
$credentials = $request->only('email', 'password');
if (!Auth::attempt($credentials)) {
return response()->json(['success'=>false, 'message' => 'Not Login successfull']);
}
$user = User::where('email', '=', $request->get('email'))->first()
return response()->json(['success'=>true,'message'=>'success', 'data' => $user]);
}
推荐阅读
- sql-server - 如何将 varchar 替换为表 SQL Server
- sql - SQL Server:如何获取上一年的数据并在输出中创建一行
- github - Github Pages 不支持 Jekyll 主题
- configuration - Packer HCL2 配置文件支持
- javascript - 动态生成的字段增量问题的名称
- r - 使用具有多个可能名称的 ID 组合数据集
- python - 在Excel中查找不规则行数的平均值
- amazon-web-services - 通过 AWS SES 发送电子邮件是否仍取决于电子邮件托管的每日电子邮件数量限制?
- angular - Angular 9 - 服务返回/列表包含数据但 *ngFor 没有显示任何内容
- python - OpenCV Python:FloodFill 表现得很奇怪