日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

asp.net webapi 自定义身份验证

發布時間:2023/12/31 asp.net 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 asp.net webapi 自定义身份验证 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
/// <summary> /// 驗證 /// </summary> /// Account API賬號 /// TimeStamp 請求時間 /// Sign 所有請求參數 加密 public class AuthFilterOutside : AuthorizeAttribute {//重寫基類的驗證方式,加入我們自定義的Ticket驗證public override void OnAuthorization(HttpActionContext actionContext){//url獲取tokenvar content = actionContext.Request.Properties["MS_HttpContext"] as HttpContextBase;string account = content.Request.QueryString["Account"];string sign = content.Request.QueryString["Sign"];int timeStamp = 0;int.TryParse(content.Request.QueryString["TimeStamp"], out timeStamp);ApiInfo apiInfo = DB.GetApiInfo(account);int nowTimeStamp = Convert.ToInt32(GenerateTimeStamp());// 無效請求if (apiInfo == null || nowTimeStamp - timeStamp > 15){HandleUnauthorizedRequest(actionContext);return;}SortedDictionary<string, string> dic = new SortedDictionary<string, string>();foreach (string key in content.Request.QueryString.AllKeys){if (key != "sign"){dic.Add(key, content.Request.QueryString[key]);}}string makeSign = GetMakeSign(dic, apiInfo.Token);// 簽名不正確if (sign != makeSign){HandleUnauthorizedRequest(actionContext);return;}}protected override void HandleUnauthorizedRequest(HttpActionContext filterContext){base.HandleUnauthorizedRequest(filterContext);var response = filterContext.Response = filterContext.Response ?? new HttpResponseMessage();response.StatusCode = HttpStatusCode.Forbidden;string str = "{\"success\":\"false\",\"message\":\"服務端拒絕訪問:您沒有權限!\"}";response.Content = new StringContent(str, Encoding.UTF8, "application/json");}public static string GenerateTimeStamp(){TimeSpan ts = DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0);return Convert.ToInt64(ts.TotalSeconds).ToString();}/// <summary>/// 所有參數 ascii碼排序 最后追加Key/// </summary>/// <param name="dic"></param>/// <param name="token"></param>/// <returns></returns>public string GetMakeSign(SortedDictionary<string, string> dic, string token){StringBuilder strBuilder = new StringBuilder();foreach (var item in dic){strBuilder.AppendFormat("{0}={1}&", item.Key, item.Value);}strBuilder.AppendFormat("key={0}", token);var md5 = MD5.Create();var bs = md5.ComputeHash(Encoding.UTF8.GetBytes(strBuilder.ToString()));var sb = new StringBuilder();foreach (byte b in bs){sb.Append(b.ToString("x2"));}//所有字符轉為大寫return sb.ToString().ToUpper();} }

?

轉載于:https://www.cnblogs.com/xuannian/p/9708521.html

總結

以上是生活随笔為你收集整理的asp.net webapi 自定义身份验证的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。