sugar aop 加密解密 增删改正常 查询不出 返回

数据库有张表UserInfo 现在需要对手机号加密 及数据库保存的手机号为加密字段 程序查询取出的为解密字段
热忱回答(10)
-
fate sta VIP0
1个月前肯定会走的
0 回复 -
fate sta VIP0
1个月前0 回复 -
Wiiii VIP0
1个月前@fate sta: 大佬这里
using SqlSugar;
using SqlSugar.DbConvert;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
var DB = new SqlSugarScope(new SqlSugar.ConnectionConfig()
{
ConnectionString = "Column Encryption Setting = Enabled;server=192.168.0.77;uid=sa;pwd=123;database=TestJiaMiDB;",
DbType = SqlSugar.DbType.SqlServer,
IsAutoCloseConnection = true
}, db => {
db.Aop.DataExecuting = (oldValue, entityInfo) =>
{
if (!entityInfo.IsAnyAttribute<JiaMiAttribute>())
return;
if ((entityInfo.OperationType == DataFilterType.InsertByObject ||
entityInfo.OperationType == DataFilterType.UpdateByObject ||
entityInfo.OperationType==DataFilterType.DeleteByObject))
{
entityInfo.SetValue(AesEncryption.Encrypt(Convert.ToString(oldValue)));
}
};
db.Aop.DataExecuted = (value, entity) =>
{
if(!entity.Entity.Columns.Any(p=>p.PropertyInfo.CustomAttributes.Any(s=>s.AttributeType==typeof(JiaMiAttribute))))
return;
foreach(var item in entity.Entity.Columns)
{
if(item.PropertyInfo.CustomAttributes.Any(s => s.AttributeType == typeof(JiaMiAttribute)))
{
var newValue = AesEncryption.Decrypt(Convert.ToString(entity.GetValue(item.PropertyName)));
entity.SetValue(item.PropertyName, newValue);
}
}
};
});
UserInfo userInfo = new UserInfo();
userInfo.ID = Guid.NewGuid().ToString();
userInfo.Name = "Test";
userInfo.Phone = "1234";
DB.GetSimpleClient<UserInfo>().Insert(userInfo); //插入数据是对的 数据库中为加密的数据
//下面这个不会进db.Aop.DataExecuted的断点 用CopyNew也不会走断点
var userInfoByPhone = DB.GetSimpleClient<UserInfo>().GetFirst(p => p.Phone == "1234");
Console.ReadLine();
}
}
[SugarTable("JiaMiUserInfo")]
public class UserInfo
{
public UserInfo()
{
}
[SugarColumn(IsPrimaryKey = true)]
public string ID { get; set; }
public string Name { get; set; }
[JiaMi]
public string Phone { get; set; }
}
/// <summary>
/// 设置类得自定义属性
/// </summary>
public class JiaMiAttribute : Attribute
{
}
}
0 回复 -
fate sta VIP0
1个月前-
0 回复 -
fate sta VIP0
1个月前可以进来,你测试了吗
0 回复 -
Wiiii VIP0
1个月前@fate sta:这就神奇了,大佬你看我的查询都不会进DataExecuted,是不是版本的问题
0 回复 -
Wiiii VIP0
1个月前现在用的5.1.4.175
0 回复 -
fate sta VIP0
1个月前0 回复 -
Wiiii VIP0
1个月前0 回复 -
Wiiii VIP0
1个月前@fate sta:你好,代码发了,帮忙看看是哪里有问题呢
0 回复