<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                ## `Token` 組件 Token 組件可以理解為 API 中使用的 Session,因為 API 是脫離 Cookie 的,Session 無法運行,所以 API 通常是在 GET/POST/HEADER 中帶上一個 access_token 參數來保持會話狀態,MixPHP 提供了 Token 來幫助用戶在 API 中操作會話。 | 類 | 調用 | | --- | --- | --- | | mix\http\Token | app()->token | | 門面類 | 調用 | | --- | --- | | mix\facades\Token | Token:: | >[danger] Token 組件暫時只支持 Redis,使用前需先安裝 Redis 數據庫。 ## 組件配置 App配置文件中,該組件的默認配置如下: [>> 到 GitHub 查看默認配置 <<](https://github.com/mix-php/mix/blob/v1/apps/httpd/config/http_permanent.php#L93) ## 使用場景 Token 通常有三種使用場景: - 通過 username、password 獲取 access_token,用于授權給客戶端,使用 access_token 可調用用戶相關的接口。 - 通過 appid、appsecret、grant_type 獲取 access_token,用于授權給第三方,使用 access_token 可調用平臺內 grant_type 參數定義的相關權限的接口。 - OAuth 2.0:將自己平臺內獲取用戶相關信息的權限授權給第三方。 >[info] Token 其實是使用 Redis 組件開發的組件,參考源代碼可改造出 OAuth 2.0 Token。 ## 使用范例 第一種使用場景的范例代碼。 獲取 Token,控制器: ~~~ // 獲取 token 方法 public function actionToken() { /* 驗證賬號密碼成功后 */ // 創建 tokenId Token::createTokenId(); // 保存會話信息 $userinfo = [ 'uid' => 1088, 'openid' => 'yZmFiZDc5MjIzZDMz', 'username' => '小明', ]; Token::set('userinfo', $userinfo); // 設置唯一索引 Token::setUniqueIndex($userinfo['openid']); // 響應 return [ 'errcode' => 0, 'access_token' => Token::getTokenId(), 'expires_in' => app()->token->expiresIn, 'openid' => $userinfo['openid'], ]; } ~~~ 效驗Token: 在前置中間件中校驗。 ~~~ // 前置中間件的 handle 方法 public function handle($callable, \Closure $next) { // 添加中間件執行代碼 $userinfo = Token::get('userinfo'); if (empty($userinfo)) { // 返回錯誤碼 return ['errcode' => 300000, 'errmsg' => 'Permission denied']; } // 執行下一個中間件 return $next(); } ~~~ ## `createTokenId` 方法 >[danger] 需要在 set **前**使用。 創建一個TokenId。 ## `setUniqueIndex` 方法 >[danger] 需要在 set **后**使用。 設置唯一索引,設置后會從上次設置的索引找出上次的tokenId,并刪除上次的token數據,使上次的token失效,然后再將本次的tokenId存入索引。 ~~~ Token::setUniqueIndex($openid); ~~~ ## `set` 方法 變量賦值。 ~~~ Token::set('name', '小華'); ~~~ ## `get` 方法 獲取變量的值。 ~~~ Token::get('name'); ~~~ >[info] name不存在時返回null。 ## `has` 方法 判斷變量是否存在。 ~~~ Token::has('name'); ~~~ ## `delete` 方法 刪除變量。 ~~~ Token::delete('name'); ~~~ ## `clear` 方法 清空全部變量。 ~~~ Token::clear(); ~~~ ## `getTokenId` 方法 獲取TokenId。 ~~~ Token::getTokenId(); ~~~ ## `refresh` 方法 刷新 token,在舊 token 有效期內,生成一個新的 token,刷新成功后可通過 getTokenId 獲取新的 tokenId。 ~~~ Token::refresh(); ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看