增加了多点登录限制 体验需要再 static\config中 把 system中的useMultipoint 修改为 true

This commit is contained in:
pixel
2020-01-02 15:32:18 +08:00
parent 60e10ffbac
commit cff6388a82
8 changed files with 123 additions and 31 deletions

View File

@@ -2,12 +2,14 @@ package api
import (
"fmt"
"gin-vue-admin/config"
"gin-vue-admin/controller/servers"
"gin-vue-admin/middleware"
"gin-vue-admin/model/modelInterface"
"gin-vue-admin/model/sysModel"
"github.com/dgrijalva/jwt-go"
"github.com/gin-gonic/gin"
"github.com/go-redis/redis"
uuid "github.com/satori/go.uuid"
"mime/multipart"
"time"
@@ -73,7 +75,7 @@ func Login(c *gin.Context) {
//登录以后签发jwt
func tokenNext(c *gin.Context, user sysModel.SysUser) {
j := &middleware.JWT{
[]byte("qmPlus"), // 唯一签名
[]byte(config.GinVueAdminconfig.JWT.SigningKey), // 唯一签名
}
clams := middleware.CustomClaims{
UUID: user.UUID,
@@ -90,7 +92,37 @@ func tokenNext(c *gin.Context, user sysModel.SysUser) {
if err != nil {
servers.ReportFormat(c, false, "获取token失败", gin.H{})
} else {
servers.ReportFormat(c, true, "登录成功", gin.H{"user": user, "token": token, "expiresAt": clams.StandardClaims.ExpiresAt * 1000})
if config.GinVueAdminconfig.System.UseMultipoint {
var loginJwt sysModel.JwtBlacklist
loginJwt.Jwt = token
err, jwtStr := loginJwt.GetRedisJWT(user.Username)
if err == redis.Nil {
err2 := loginJwt.SetRedisJWT(user.Username)
if err2 != nil {
servers.ReportFormat(c, false, "设置登录状态失败", gin.H{})
} else {
servers.ReportFormat(c, true, "登录成功", gin.H{"user": user, "token": token, "expiresAt": clams.StandardClaims.ExpiresAt * 1000})
}
} else if err != nil {
servers.ReportFormat(c, false, fmt.Sprintf("%v", err), gin.H{})
} else {
var blackjWT sysModel.JwtBlacklist
blackjWT.Jwt = jwtStr
err3 := blackjWT.JsonInBlacklist()
if err3 != nil {
servers.ReportFormat(c, false, "jwt作废失败", gin.H{})
} else {
err2 := loginJwt.SetRedisJWT(user.Username)
if err2 != nil {
servers.ReportFormat(c, false, "设置登录状态失败", gin.H{})
} else {
servers.ReportFormat(c, true, "登录成功", gin.H{"user": user, "token": token, "expiresAt": clams.StandardClaims.ExpiresAt * 1000})
}
}
}
} else {
servers.ReportFormat(c, true, "登录成功", gin.H{"user": user, "token": token, "expiresAt": clams.StandardClaims.ExpiresAt * 1000})
}
}
}