某個測驗賬號登錄系統后,里面所有顯示手機號的地方格式都改成138****8888,其他賬號正常顯示手機號,各位大神,有沒有科學的方式處理?
uj5u.com熱心網友回復:
系統都是用ajax呼叫介面,ApiControlleruj5u.com熱心網友回復:
什麼科學方式?無非就是判斷該用戶的字串處理一下就行,截取前面三個數 +"****" +截取後面4個數字uj5u.com熱心網友回復:
直接在資料庫里替換出來就行了uj5u.com熱心網友回復:
在所有查詢手機號的介面上加上權限控制,根據用戶權限來更改你的介面回傳。uj5u.com熱心網友回復:
Authorize權限嗎? 更改介面的回傳,是不是意味著我要去決議回傳結果并替換手機號。uj5u.com熱心網友回復:
不在這里改那你在哪里改,前端?資料庫?
uj5u.com熱心網友回復:
三元運算子
uj5u.com熱心網友回復:
又是沒頭沒尾的需求。提問請帶背景關系,不然我們無從回答1.什么查詢手機號,你手機號在哪里??
如果你說是資料庫里某個欄位,ok,你所有查詢此表的時候替換。(sql里直接替換,db層查詢給個可選引數,json序列化控制format,automapper映射時做手段都ok)
2.上面是特定的,如果你說俺就不知道手機號從哪里來,只要輸出里面長得像手機號的都要處理,ok,加換個midware,攔截response,替換所有長的像的
uj5u.com熱心網友回復:
至于權限是一個故事,根據不同的權限用不同的jsonconvert的配置uj5u.com熱心網友回復:
給個例子,我懶得接入啥權限,我們就展示怎么在最后json序列化的時候替換東西。當然我只是展示,寫的不是那么嚴謹。看明白自己集成先給結果
很明顯序列化被替換了
代碼
using Newtonsoft.Json;
using Newtonsoft.Json.Serialization;
namespace ConsoleApp3
{
class Program
{
static void Main(string[] args)
{
JsonSerializerSettings jsonSerializerSettings=new JsonSerializerSettings();
jsonSerializerSettings.ContractResolver=new myContractResolver();
var obj = new {num = "13800001"};
var str = JsonConvert.SerializeObject(obj,jsonSerializerSettings);
// Console.WriteLine("Hello World!");
}
public class mystringformt:JsonConverter
{
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
string temp = (string) value;
writer.WriteValue("我被替換了");
}
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
throw new NotImplementedException();
}
public override bool CanConvert(Type objectType)
{
return objectType == typeof(string);
}
}
public class myContractResolver : DefaultContractResolver
{
protected override JsonProperty CreateProperty(MemberInfo member, MemberSerialization memberSerialization)
{
var b= base.CreateProperty(member, memberSerialization);
if(member.Name=="num")
b.Converter=new mystringformt();
return b;
}
}
}
}
uj5u.com熱心網友回復:
從資料庫查詢的地方下手 substring就行了.uj5u.com熱心網友回復:
用正則運算式替換一下就好了
String s = "13888888888";
System.out.println(s.replaceAll("([\\d]{3})([\\d]{4})([\\d]{4})", "$1****$3"));
uj5u.com熱心網友回復:
你如何判斷是測驗用戶的,那就怎么處理顯示方案。
照道理,這需要權限控制的,
但如果嫌麻煩,那就只增加一個if else 控制顯示就是了。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/3690.html
標籤:ASP.NET
上一篇:def myfunction(*param, base=3)
下一篇:dllimport
