国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

PHP, api接口請(qǐng)求token驗(yàn)證

supernavy / 1340人閱讀

加token的目的,不言而喻,為了api接口的安全性。等等 ~~~

先聲明一些驗(yàn)證規(guī)則

protected $request; // 用來處理參數(shù)
protected $validater; // 用來驗(yàn)證數(shù)據(jù)/參數(shù)
protected $params; // 過濾后符合要求的參數(shù)
protected $rules = array(
    "Login" => array(
        "login_join" => array(
            "mobile"    => ["require","max" => 11],
            "password"  => "require|length:6,18",
        ),
    ),
);
/**
 * 構(gòu)造函數(shù)
 * 初始化檢測(cè)請(qǐng)求時(shí)間,簽名等
 */
public function _initialize() {
    parent::_initialize();
    // 獲取參數(shù)
    $this->request = Request::instance();
    //驗(yàn)證是否超時(shí)
    $this->check_time($this->request->only(["timestamp"]));
    //驗(yàn)證
    $this->check_token($this->request->param());
    //驗(yàn)證參數(shù)
    $this->params = $this->check_params($this->request->except(["timestamp","token"]));
}

定義個(gè)返回?cái)?shù)據(jù)的方法

/**
* api 數(shù)據(jù)返回
 * @param  [int] $code [結(jié)果碼 200:正常/4**數(shù)據(jù)問題/5**服務(wù)器問題]
 * @param  [string] $msg  [接口要返回的提示信息]
 * @param  [array]  $data [接口要返回的數(shù)據(jù)]
 * @return [string]       [最終的json數(shù)據(jù)]
*/
public function return_msg($code, $msg = "", $data = []) {
    $return_data["code"] = $code;
    $return_data["msg"]  = $msg;
    $return_data["data"] = $data;
    echo json_encode($return_data);
    die;
}

驗(yàn)證是否超時(shí)

/**
* 驗(yàn)證請(qǐng)求是否超時(shí)
 * @param  [array] $arr [包含時(shí)間戳的參數(shù)數(shù)組]
 * @return [json]      [檢測(cè)結(jié)果]
*/
public function check_time($arr) {
    if (!isset($arr["timestamp"]) || intval($arr["timestamp"]) <= 1) {
        $this->return_msg(1,"Timestamp error");
    }
    if (time() - intval($arr["timestamp"]) > 300) {
        $this->return_msg(1,"Request timeout");
    }
}

驗(yàn)證token

/**
* 驗(yàn)證token(防止篡改數(shù)據(jù))
 * @param  [array] $arr [全部請(qǐng)求參數(shù)]
 * @return [json]      [token驗(yàn)證結(jié)果]
*/
public function check_token($arr) {
    /*********** api傳過來的token  ***********/
    if (!isset($arr["token"]) || empty($arr["token"])) {
        $this->return_msg(1,"Token can`t be empty");
    }
    $app_token = $arr["token"]; // api傳過來的token
    /*********** 服務(wù)器端生成token  ***********/
    unset($arr["token"]);
    $service_token = "";
    foreach ($arr as $key => $value) {
        $service_token .= md5($value);
    }
    $service_token = md5(config("app.login_begin"). $service_token .config("app.login_end")); // 服務(wù)器端即時(shí)生成的token
    /*********** 對(duì)比token,返回結(jié)果  ***********/
    if ($app_token !== $service_token) {
        $this->return_msg(1,"Token is not correct");
    }
}

驗(yàn)證參數(shù)

/**
* 驗(yàn)證參數(shù) 參數(shù)過濾
 * @param  [array] $arr [除time和token外的所有參數(shù)]
 * @return [return]      [合格的參數(shù)數(shù)組]
*/
public function check_params($arr) {
    /*********** 獲取參數(shù)的驗(yàn)證規(guī)則  ***********/
    $rule = $this->rules[$this->request->controller()][$this->request->action()];
    /*********** 驗(yàn)證參數(shù)并返回錯(cuò)誤  ***********/
    $this->validater = new Validate($rule);
    if (!$this->validater->check($arr)) {
        $this->return_msg(1,$this->validater->getError());
    }
    /*********** 如果正常,通過驗(yàn)證  ***********/
    return $arr;
}

可以登陸后將token存儲(chǔ)起來,也可以每次請(qǐng)求都驗(yàn)證token.

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/28744.html

相關(guān)文章

  • 【日常填坑】之a(chǎn)jax請(qǐng)求laravel的api接口

    摘要:合適和夠用是最完美的追求。比如從頁(yè)面去請(qǐng)求的資源。它允許瀏覽器向跨源服務(wù)器,發(fā)出請(qǐng)求,從而克服了只能同源使用的限制。定義在中的路由都是無(wú)狀態(tài)的,并且會(huì)應(yīng)用中間件組。 關(guān)于作者 程序開發(fā)人員,不拘泥于語(yǔ)言與技術(shù),目前主要從事PHP和前端開發(fā),使用Laravel和VueJs,App端使用Apicloud混合式開發(fā)。合適和夠用是最完美的追求。 個(gè)人網(wǎng)站:http://www.linganm...

    Arno 評(píng)論0 收藏0
  • 【日常填坑】之a(chǎn)jax請(qǐng)求laravel的api接口

    摘要:合適和夠用是最完美的追求。比如從頁(yè)面去請(qǐng)求的資源。它允許瀏覽器向跨源服務(wù)器,發(fā)出請(qǐng)求,從而克服了只能同源使用的限制。定義在中的路由都是無(wú)狀態(tài)的,并且會(huì)應(yīng)用中間件組。 關(guān)于作者 程序開發(fā)人員,不拘泥于語(yǔ)言與技術(shù),目前主要從事PHP和前端開發(fā),使用Laravel和VueJs,App端使用Apicloud混合式開發(fā)。合適和夠用是最完美的追求。 個(gè)人網(wǎng)站:http://www.linganm...

    neu 評(píng)論0 收藏0
  • 【日常填坑】之a(chǎn)jax請(qǐng)求laravel的api接口

    摘要:合適和夠用是最完美的追求。比如從頁(yè)面去請(qǐng)求的資源。它允許瀏覽器向跨源服務(wù)器,發(fā)出請(qǐng)求,從而克服了只能同源使用的限制。定義在中的路由都是無(wú)狀態(tài)的,并且會(huì)應(yīng)用中間件組。 關(guān)于作者 程序開發(fā)人員,不拘泥于語(yǔ)言與技術(shù),目前主要從事PHP和前端開發(fā),使用Laravel和VueJs,App端使用Apicloud混合式開發(fā)。合適和夠用是最完美的追求。 個(gè)人網(wǎng)站:http://www.linganm...

    fuyi501 評(píng)論0 收藏0
  • APIapi 下 session 的 Yes or No?

    摘要:對(duì)了,在這之前,首先要祝大家端午節(jié)快樂嘎嘎正文切入正題。其實(shí)在接入之前,我就有點(diǎn)范嘀咕,客戶端不會(huì)拿不到吧果然怕什么來什么,安卓那邊告訴我錯(cuò)誤,取不到值。和安卓那邊溝通,他們表示框架中可以模擬瀏覽器行為,實(shí)現(xiàn)的自動(dòng)發(fā)送。 寫在前面 時(shí)間:2017-05-29 7:30 距離上篇文章發(fā)布已經(jīng)一個(gè)多月了,本來自己的計(jì)劃是一周一記,怎么就變成月記了呢?最近工作的事情忙的焦頭爛額,當(dāng)然也不能...

    Y3G 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<