Пример #1
0
        public bool GetUserInfo()
        {
            int appid, userId;

            if (!xUtils.DecryptOpenId(this._open_id, out userId, out appid))
            {
                Alert((ResultType)ResponseCode.Token错误, "open_id无效");
                return(false);
            }
            UserToken token = UserToken.FromCipherToken(_access_token);

            if (token == null)
            {
                Alert("无效Token");
                return(false);
            }
            if (token.Expire_Time < DateTime.Now)
            {
                Alert((ResultType)ResponseCode.令牌已过期, "Token已过期");
                return(false);
            }
            var   fac      = UserModuleFactory.GetUserModuleInstance();
            IUser userInfo = fac?.GetUserByID(userId);

            if (userInfo == null)
            {
                Alert("用户已注销或不存在");
                return(false);
            }
            UserInfoDictionary.Add("UserName", userInfo.UserName);
            UserInfoDictionary.Add("Avatar", userInfo.Avatar);
            return(true);
        }
Пример #2
0
 public override Task <GrantResponseDTO> GrantByToken(GrantByTokenRequestDTO request, ServerCallContext context)
 {
     return(Task.Run(() =>
     {
         GrantResponseDTO response = new GrantResponseDTO();
         UserToken token = UserToken.FromCipherToken(request.Token);
         if (token == null)
         {
             response.RetCode = "0400";
             response.RetMsg = "无效的token";
             return response;
         }
         OAuthApp app = OAuthAppCache.Get(request.Appid);
         if (app == null)
         {
             response.RetCode = "0400";
             response.RetMsg = "无效的应用id";
             return response;
         }
         if (app.Id != token.AppId)
         {
             response.RetCode = "0403";
             response.RetMsg = "无效的token";
             return response;
         }
         CodePrivilege[] privileges = null;
         if (request.Grants != null && request.Grants.Count > 0)
         {
             privileges = new CodePrivilege[request.Grants.Count];
             for (int i = 0; i < request.Grants.Count; i++)
             {
                 privileges[i] = new CodePrivilege {
                     Id = request.Grants[i].Id, Type = request.Grants[i].Type
                 };
             }
         }
         GrantTokenPrivilegeProvider grant = new GrantTokenPrivilegeProvider(app.Appid, token.UserId, request.Scopes, request.Client.DeviceId);
         if (!grant.Grant(request.GrantAll, privileges))
         {
             response.RetCode = "0500";
             response.RetMsg = "授权失败,请重试";
             return response;
         }
         response.RetCode = "0000";
         response.RetMsg = "ok";
         response.Data = new GrantResponseDTO.Types.Result
         {
             Code = grant.Auth_Code
         };
         return response;
     }));
 }
Пример #3
0
        [HttpPost("client")] // api/authorize/client
        public ResponseResult <GrantResponseDTO> GrantByToken(GrantByTokenRequestDTO data)
        {
            GrantResponseDTO response = new GrantResponseDTO();
            UserToken        token    = UserToken.FromCipherToken(data.Token);

            if (token == null)
            {
                return(Fail <GrantResponseDTO>("无效的token", "0400"));
            }
            OAuthApp app = OAuthAppCache.Get(data.Appid);

            if (app == null)
            {
                return(Fail <GrantResponseDTO>("无效的应用id", "0400"));
            }
            if (app.Id != token.AppId)
            {
                return(Fail <GrantResponseDTO>("无效的token", "0500"));
            }
            CodePrivilege[] privileges = null;
            if (data.Privileges != null && data.Privileges.Count > 0)
            {
                privileges = new CodePrivilege[data.Privileges.Count];
                for (int i = 0; i < data.Privileges.Count; i++)
                {
                    privileges[i] = new CodePrivilege {
                        Id = data.Privileges[i].Id, Type = data.Privileges[i].Type
                    };
                }
            }
            GrantTokenPrivilegeProvider grant = new GrantTokenPrivilegeProvider(app.Appid, token.UserId, data.Scopes, data.Client.DeviceId);

            if (!grant.Grant(data.GrantAll, privileges))
            {
                return(Fail <GrantResponseDTO>("授权失败,请重试"));
            }
            response.Code = grant.Auth_Code;
            return(Success(response));
        }
Пример #4
0
        public static FuncResult <UserToken> DecryptAccessToken(string access_token)
        {
            var token = UserToken.FromCipherToken(access_token);

            return(FuncResult.SuccessResult(token));
        }