<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之旅 廣告
                ### redis+token登錄 * 前言 * 一、生成唯一token * 二、設置token并返回token到前端 * 三、登錄攔截器(需要登錄/不需登錄) # 前言 登錄一般可以使用`session`處理,它使用比較簡單,但是一般用在`web`端比較多。如果需要考慮在多端運行,使用`redis+token`方式更加方便,為啥使用`redis`而不是使用數據庫存儲`token`呢?當然數據庫是可以存儲的,后臺可以請求數據庫查詢`token`字段,但是如果考慮高并發的情況,`redis`更加適合,一般查詢用戶信息的地方不會很多,判斷用戶是否登錄的情況會比較多。 # 一、生成唯一token 可以新建一個`common`類,專門放與字符串相關的方法: ~~~php <?phpnamespace app\common\lib;class Str {public static function getLoginToken($string){// 生成 token$str = md5(uniqid(md5(microtime(true)), true));return sha1($str . $string);} } ~~~ # 二、設置token并返回token到前端 在登錄接口中,先判斷參數,如果參數通過,在生成`token`,將`token`存于`radis`中并設置失效時間,然后返回`token`到前端: ~~~php // business層的登錄方法 public function login($data){// 省略登錄參數驗證與數據庫更新操作$token = Str::getLoginToken($data["phone_number"]);$redisData = ["id" => $userId,"username" => $username];// 保存token到redis, 有效期7天$res = cache(config("radis.token_pre").$token, $redisData, 7 * 24 * 3600);return $res ? ["token" => $token, "username" => $username] : false; } ~~~ > 這里直接使用`cache`保存,是因為在`cache.php`配置文件里設置了方式為`redis`,詳情可以看這篇文章的3.4配置緩存redis:阿里云短信結合redis實現登錄 ~~~php // controller控制器層的登錄方法 調用business層的方法 $result = (new User())->login($data); if($result){return show(config('status.success'), "登錄成功", $result); }else{return show(config('status.error'), "登錄失敗"); } ~~~ 前端請求成功后獲取到`token`,然后保存下來,下次發請求的時候帶上,后臺去`redis`里查詢,如果`token`不存在或過期就會被后臺攔截。 ![在這里插入圖片描述](https://img-blog.csdnimg.cn/20201217213544766.png) > Tips: 這里的`token`也不是百分百安全,因為如過有用戶獲取到了`token`,那么在有效期內這個`token`可以一直訪問到后臺數據,這個也是無法解決的事。 # 三、登錄攔截器(需要登錄/不需登錄) 待寫。。。
                  <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>

                              哎呀哎呀视频在线观看