truthhun 2 years ago
parent 9839aaf127
commit c4c9090568

@ -36,16 +36,14 @@ message User {
}
message RegisterAndLoginRequest {
string username = 1
[ (gogoproto.moretags) = "validate:\"min=4,max=32,alphanum\"" ];
string username = 1 [ (gogoproto.moretags) = "validate:\"min=4,max=32\"" ];
string password = 2 [ (gogoproto.moretags) = "validate:\"min=6\"" ];
string captcha = 3;
string captcha_id = 4;
}
message GetUserCaptchaRequest {
string type =
1; // registerlogincommentfind_passwordupload
string type = 1; // registerlogincommentfind_passwordupload
}
message LoginReply {

@ -3,7 +3,6 @@ package biz
import (
"context"
"moredoc/model"
"net/http"
"strings"
"time"
@ -11,10 +10,16 @@ import (
grpc_auth "github.com/grpc-ecosystem/go-grpc-middleware/auth"
"go.uber.org/zap"
"google.golang.org/grpc"
"google.golang.org/grpc/codes"
"google.golang.org/grpc/status"
)
/*
tokenctx便使
ctxctx
*/
type AuthService struct {
dbModel *model.DBModel
logger *zap.Logger
@ -34,9 +39,9 @@ const (
CtxKeyUserClaims ContextKey = "user"
)
const (
messageInvalidToken = "您的登录令牌已过期,请重新登录"
)
// const (
// messageInvalidToken = "您的登录令牌已过期,请重新登录"
// )
type ServiceAuthFuncOverride interface {
AuthFuncOverride(ctx context.Context, fullMethodName string) (context.Context, error)
@ -56,18 +61,16 @@ func (s *AuthService) AuthUnaryServerInterceptor() grpc.UnaryServerInterceptor {
// 1. 从权限表中查询API如果存在该API则表示该API需要权限才能访问如果不存在则跳过
// 2. 如果用户携带有token则根据token判断是否有效如果有效则获取用户信息放到ctx否则跳过
func (s *AuthService) AuthGRPC(ctx context.Context, info *grpc.UnaryServerInfo) (context.Context, error) {
token, err := grpc_auth.AuthFromMD(ctx, "bearer")
if err != nil {
// 可忽略错误
return ctx, err
return ctx, nil
}
claims, err := s.dbModel.CheckUserJWTToken(token)
// token存在但是不正确或者已过期这时需要返回错误前端清除存储的错误登录信息
if err != nil || claims == nil || claims.ExpiresAt < time.Now().Unix() || s.dbModel.IsInvalidToken(claims.UUID) {
return ctx, status.Error(codes.Unauthenticated, messageInvalidToken)
// return ctx, status.Error(codes.Unauthenticated, messageInvalidToken)
return ctx, nil
}
newCtx := context.WithValue(ctx, CtxKeyUserClaims, claims)
@ -88,8 +91,9 @@ func (s *AuthService) AuthGin() gin.HandlerFunc {
token := bearer[1]
claims, err := s.dbModel.CheckUserJWTToken(token)
if err != nil || claims == nil || claims.ExpiresAt < time.Now().Unix() || s.dbModel.IsInvalidToken(claims.UUID) {
ctx.JSON(http.StatusUnauthorized, status.Error(codes.Unauthenticated, messageInvalidToken))
ctx.Abort()
// ctx.JSON(http.StatusUnauthorized, status.Error(codes.Unauthenticated, messageInvalidToken))
// ctx.Abort()
ctx.Next()
return
}

Loading…
Cancel
Save