/// <summary> /// 生成用户的公钥,返回加密UserId的加密串 /// </summary> /// <param name="uid"></param> /// <param name="userType"></param> /// <returns></returns> public string CreatePublicKey(int uid, AuthUserType userType) { var encryptStr = Execute(db => { var authKey = db.AuthKeys.FirstOrDefault(u => u.UserId == uid && u.UserType == (int)userType); if (authKey != null) { return(RSAHelper.EncryptString(uid.ToString(), authKey.PublicKey)); } var keyPair = RSAHelper.GetRASKey(); authKey = new AuthKeys { UserId = uid, PublicKey = keyPair.PublicKey, PrivateKey = keyPair.PrivateKey, UserType = (int)userType, CreateTime = DateTime.Now }; db.AuthKeys.Add(authKey); db.SaveChanges(); return(RSAHelper.EncryptString(uid.ToString(), authKey.PublicKey)); }); CreateCache <AuthKeys>(); return(encryptStr); }
public AuthKeys GetAuthKeys(int uid, AuthUserType userType) { AuthKeys authKeys; CheckKey(uid, userType, out authKeys); return(authKeys ?? new AuthKeys()); }
public override void OnActionExecuting(HttpActionContext filterContext) { var headers = filterContext.Request.Headers; var result = new ResponsePackage <object>(); var extionData = new ResponseExtensionData { ModelValidateErrors = new List <ModelValidateError>(), CallResult = CallResult.Unauthorized, RetMsg = LanguageUtil.Translate("api_Filters_AuthCodeAttribute_CheckAppLoginAttribute_OnActionExecuting_RetMsg") }; if (!headers.Contains("uid")) { result.Data = null; result.ExtensionData = extionData; filterContext.Response = filterContext.Request.CreateResponse(HttpStatusCode.OK, result); return; } var uid = Convert.ToInt32(headers.GetValues("uid").First()); if (headers.Contains("token") && uid > 0) { const AuthUserType userType = (AuthUserType)2; var tokenEncryptStr = headers.GetValues("token").First(); var authKeys = ((IContainer)HttpRuntime.Cache["containerKey"]).Resolve <IAuthKeysBusiness>().GetAuthKeys(uid, userType); if (string.IsNullOrEmpty(tokenEncryptStr) || authKeys == null || authKeys.PrivateKey == null) { result.Data = null; result.ExtensionData = extionData; filterContext.Response = filterContext.Request.CreateResponse(HttpStatusCode.OK, result); return; } var tokenDecryptStr = RSAHelper.DecryptString(tokenEncryptStr, authKeys.PrivateKey); if (string.IsNullOrWhiteSpace(tokenDecryptStr) || !string.Equals(tokenDecryptStr, uid.ToString())) { result.Data = null; result.ExtensionData = extionData; filterContext.Response = filterContext.Request.CreateResponse(HttpStatusCode.OK, result); return; } } else { result.Data = null; result.ExtensionData = extionData; filterContext.Response = filterContext.Request.CreateResponse(HttpStatusCode.OK, result); return; } base.OnActionExecuting(filterContext); }
private void CheckKey(int uid, AuthUserType userType, out AuthKeys authKeys) { var condtions = new List <Condtion> { new Condtion { FiledName = "UserId", FiledValue = uid, ExpressionLogic = ExpressionLogic.And, ExpressionType = ExpressionType.Equal }, new Condtion { FiledName = "UserType", FiledValue = (int)userType, ExpressionLogic = ExpressionLogic.And, ExpressionType = ExpressionType.Equal } }; authKeys = _authKeysRepository.GetEntity(condtions); }
public Result GetAuthKeys(int uid, AuthUserType userType) { return(CommonResult(() => _iAuthKeysBusiness.GetAuthKeys(uid, userType), r => Console.WriteLine(r.ToJSON()))); }
public string CreatePublicKey(int uid, AuthUserType userType) { return(_authKeysRepository.CreatePublicKey(uid, userType)); }