Răsfoiți Sursa

过去token

15313670163 2 luni în urmă
părinte
comite
be2995edc1
2 a modificat fișierele cu 48 adăugiri și 2 ștergeri
  1. 21 2
      app/Controller/LoginController.php
  2. 27 0
      app/Model/UserToken.php

+ 21 - 2
app/Controller/LoginController.php

@@ -11,7 +11,7 @@ use Hyperf\Di\Annotation\Inject;
 use Hyperf\HttpServer\Annotation\AutoController;
 use Hyperf\Validation\Contract\ValidatorFactoryInterface;
 use \Phper666\JWTAuth\JWT;
-
+use App\Model\UserToken;
 /**
  * @AutoController()
  */
@@ -95,13 +95,32 @@ class LoginController extends AbstractController
 //        var_dump($userData);
         // 使用默认场景登录
         $token = $jwt->getToken('default', $userData);
+
+        $old_token = UserToken::where('user_id', $userInfos['data']['id'])->orderBy('created_at')->first();
+        if ($old_token) {
+            if ($old_token->token != $token->toString()) {
+                $out = $jwt->logout('default', $userData);
+                if ($out != $old_token->token) {
+                    $log_out = UserToken::where('user_id', $userInfos['data']['id'])->update(['token' => $out]);
+                } else {
+                    return Result::error("请不要重复登录!");
+                }
+            }
+        }else{
+            $user_token =  UserToken::create([
+                'user_id' => $userInfos['data']['id'],
+                'token' => $token->toString()
+            ]);
+            if (!$user_token) {
+                return Result::error("登录失败!");
+            }
+        }
         $data = [
             'token' => $token->toString(),
             'exp' => $jwt->getTTL($token->toString()),
         ];
         return Result::success($data);
     }
-
     /**
      * @return void
      */

+ 27 - 0
app/Model/UserToken.php

@@ -0,0 +1,27 @@
+<?php
+
+declare(strict_types=1);
+
+namespace App\Model;
+
+use Hyperf\DbConnection\Model\Model;
+
+/**
+ */
+class UserToken extends Model
+{
+    /**
+     * The table associated with the model.
+     */
+    protected ?string $table = 'user_token';
+
+    /**
+     * The attributes that are mass assignable.
+     */
+    protected array $fillable = [];
+
+    /**
+     * The attributes that should be cast to native types.
+     */
+    protected array $casts = [];
+}