如何使用基本身份验证在php中授权rest api

I am developing a rest API for login and I not its working means I can fetch data from the server and send response to the user. Now I want to implement basic Authentication with it. I am very new for Rest API development and Slim. So please Help me in that.

$app->get('/users', function() use($app, $db)
{

$app->response()->header("Content-Type", "application/json");

$req=$app->request();
$pass = $req->params('pass'); // Getting parameter with names
$email = $req->params('email'); // Getting parameter with names


$user=$db->Sign_Up()->where (array('email_id'=>$email, 'password'=> $pass));
$data=$user->fetch();
$status=$data['status'];
$user_pass=$data['password'];
$user_email=$data['email_id'];
$user_name=$data['user_name'];
$uesr_ip=$_SERVER['REMOTE_ADDR'];


if ($pass!=$user_pass || $email != $user_email)
{
echo json_encode( 
array(
'status'=>false,
'Message'=>'Email or Password dose not match.'
));

}
else if($status=='active')
    {
            $user_os        =   getOS();
            $user_browser   =   getBrowser();

$message = "
<div style='font-size:15px;text-align:center;border: 1px solid #ddd;background: #DADADA;margin: 2%;padding: 5%;'>
Hi $user_name,
Your KarAssist Account $user_email was just used to sign in from $user_browser on $user_os.
</div>
";

$headers  = 'MIME-Version: 1.0' . "
";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "
";



            $mail_sent=mail($user_email, "New Sign In from $user_browser on $user_os", $message,$headers);

            if ($mail_sent)
            {
                        echo json_encode(array(
    'User_Info'=>array(
                        'status'=>true, 
                        'id'=> $data['id'],
                        'First_Name'=>$data['first_name'],
                        'Email_Id'=>$data['email_id'],
                        'Last_Name'=>$data['last_name'],
                        'Phone_Number'=>$data['phone_number'],
                        'Status'=>$data['status']

    ),

    'App_info'=>array(
                    'Device_token'=>$data['device_token'],
                    'App_version'=>$data['app_version']         
        )));

            }
            else
            {
                echo json_encode(array(
    'status'=>false,
    'message'=>"There is some Technical error. We are sorry to inform you we could not sent mail to you. So please change your mail ASAP."
    ));


            }
}
else
{
    echo json_encode(array(
    'status'=>false,
    'message'=>"User with Email $email is not avtivated yet."
    ));
}
});

This code is working good. I want to implement Basic auth with it. So let me know how to do it.

doutou7286
doutou7286 我正在使用slim3.1
4 年多之前 回复
drl37530
drl37530 您使用的是哪个版本的Slim?
4 年多之前 回复
dotws86260
dotws86260 完成编辑。
4 年多之前 回复
doupi7619
doupi7619 请格式化您的代码
4 年多之前 回复

1个回答



最简单的方法是使用现有的基本Auth中间件。 使用此中间件,您可以执行以下操作:</ p>

  $ app = new \ Slim \ App; 

$ app-&gt; add(new \ Slim \ Middleware \ HttpBasicAuthentication([
“path”=&gt;“/ api”,
“realm”=&gt;“受保护”,
“用户”=&gt; [
“root”=&gt;“t00r”,\ n“user”=&gt;“passw0rd”
]
]));
</ code> </ pre>
</ div>

展开原文

原文

Easiest thing is to use an existing Basic Auth middleware. With this middleware you can do something like following:

$app = new \Slim\App;

$app->add(new \Slim\Middleware\HttpBasicAuthentication([
    "path" => "/api",
    "realm" => "Protected",
    "users" => [
        "root" => "t00r",
        "user" => "passw0rd"
    ]
]));

doumeng3345
doumeng3345 谢谢您的帮助。 :)
4 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐