diff --git a/Sense/server/common/middleware/handler/auth.go b/Sense/server/common/middleware/handler/auth.go
index c5e3020..c6651ae 100644
--- a/Sense/server/common/middleware/handler/auth.go
+++ b/Sense/server/common/middleware/handler/auth.go
@@ -7,9 +7,7 @@ import (
"github.com/gin-gonic/gin"
"github.com/go-admin-team/go-admin-core/sdk/api"
- "github.com/go-admin-team/go-admin-core/sdk/config"
"github.com/go-admin-team/go-admin-core/sdk/pkg"
- "github.com/go-admin-team/go-admin-core/sdk/pkg/captcha"
jwt "github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth"
"github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth/user"
"github.com/go-admin-team/go-admin-core/sdk/pkg/response"
@@ -82,21 +80,13 @@ func Authenticator(c *gin.Context) (interface{}, error) {
return nil, jwt.ErrMissingLoginValues
}
- if config.ApplicationConfig.Mode != "dev" {
- if !captcha.Verify(loginVals.UUID, loginVals.Code, true) {
- username = loginVals.Username
- msg = "验证码错误"
- status = "1"
-
- return nil, jwt.ErrInvalidVerificationode
- }
- }
sysUser, role, e := loginVals.GetUser(db)
if e == nil {
username = loginVals.Username
return map[string]interface{}{"user": sysUser, "role": role}, nil
} else {
+ username = loginVals.Username
msg = "登录失败"
status = "1"
log.Warnf("%s login failed!", loginVals.Username)
diff --git a/Sense/server/common/middleware/handler/login.go b/Sense/server/common/middleware/handler/login.go
index d17626c..3358b43 100644
--- a/Sense/server/common/middleware/handler/login.go
+++ b/Sense/server/common/middleware/handler/login.go
@@ -9,8 +9,6 @@ import (
type Login struct {
Username string `form:"UserName" json:"username" binding:"required"`
Password string `form:"Password" json:"password" binding:"required"`
- Code string `form:"Code" json:"code" binding:"required"`
- UUID string `form:"UUID" json:"uuid" binding:"required"`
}
func (u *Login) GetUser(tx *gorm.DB) (user SysUser, role SysRole, err error) {
diff --git a/Sense/server/common/middleware/handler/login_test.go b/Sense/server/common/middleware/handler/login_test.go
new file mode 100644
index 0000000..74df91b
--- /dev/null
+++ b/Sense/server/common/middleware/handler/login_test.go
@@ -0,0 +1,35 @@
+package handler
+
+import (
+ "net/http/httptest"
+ "reflect"
+ "strings"
+ "testing"
+
+ "github.com/gin-gonic/gin"
+)
+
+func TestLoginAcceptsCredentialsWithoutCaptcha(t *testing.T) {
+ gin.SetMode(gin.TestMode)
+ ctx, _ := gin.CreateTestContext(httptest.NewRecorder())
+ ctx.Request = httptest.NewRequest("POST", "/api/v1/login", strings.NewReader(`{"username":"operator","password":"valid-password"}`))
+ ctx.Request.Header.Set("Content-Type", "application/json")
+
+ var login Login
+ if err := ctx.ShouldBindJSON(&login); err != nil {
+ t.Fatalf("bind credentials-only login: %v", err)
+ }
+ if login.Username != "operator" || login.Password != "valid-password" {
+ t.Fatalf("unexpected login payload: username=%q", login.Username)
+ }
+
+ typeOfLogin := reflect.TypeOf(login)
+ if typeOfLogin.NumField() != 2 {
+ t.Fatalf("login payload must only expose username and password, got %d fields", typeOfLogin.NumField())
+ }
+ for _, removed := range []string{"Code", "UUID"} {
+ if _, ok := typeOfLogin.FieldByName(removed); ok {
+ t.Fatalf("captcha field %s must not be part of the login payload", removed)
+ }
+ }
+}
diff --git a/Sense/server/docs/admin/admin_docs.go b/Sense/server/docs/admin/admin_docs.go
index 688aa87..52d021e 100644
--- a/Sense/server/docs/admin/admin_docs.go
+++ b/Sense/server/docs/admin/admin_docs.go
@@ -3798,23 +3798,15 @@ const docTemplateadmin = `{
"handler.Login": {
"type": "object",
"required": [
- "code",
"password",
- "username",
- "uuid"
+ "username"
],
"properties": {
- "code": {
- "type": "string"
- },
"password": {
"type": "string"
},
"username": {
"type": "string"
- },
- "uuid": {
- "type": "string"
}
}
},
diff --git a/Sense/server/docs/admin/admin_swagger.json b/Sense/server/docs/admin/admin_swagger.json
index d3c32a1..db98d35 100644
--- a/Sense/server/docs/admin/admin_swagger.json
+++ b/Sense/server/docs/admin/admin_swagger.json
@@ -3789,23 +3789,15 @@
"handler.Login": {
"type": "object",
"required": [
- "code",
"password",
- "username",
- "uuid"
+ "username"
],
"properties": {
- "code": {
- "type": "string"
- },
"password": {
"type": "string"
},
"username": {
"type": "string"
- },
- "uuid": {
- "type": "string"
}
}
},
@@ -4345,4 +4337,4 @@
"in": "header"
}
}
-}
\ No newline at end of file
+}
diff --git a/Sense/server/docs/admin/admin_swagger.yaml b/Sense/server/docs/admin/admin_swagger.yaml
index 412817e..2d92499 100644
--- a/Sense/server/docs/admin/admin_swagger.yaml
+++ b/Sense/server/docs/admin/admin_swagger.yaml
@@ -685,19 +685,13 @@ definitions:
type: object
handler.Login:
properties:
- code:
- type: string
password:
type: string
username:
type: string
- uuid:
- type: string
required:
- - code
- password
- username
- - uuid
type: object
models.SysApi:
properties:
diff --git a/Sense/ui/src/views/login/index.vue b/Sense/ui/src/views/login/index.vue
index 259f19b..9c19c1c 100644
--- a/Sense/ui/src/views/login/index.vue
+++ b/Sense/ui/src/views/login/index.vue
@@ -102,29 +102,6 @@
-
-
-
-
-
![验证码]()
-
-
-
-
-
-
-