校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > ASP.NET MVC結合JavaScript登錄、校驗和加密

ASP.NET MVC結合JavaScript登錄、校驗和加密

熱門標簽:威力最大的電銷機器人 旅游地圖標注線路 電話機器人鑰匙扣 400電話唐山辦理 地圖標注位置怎么弄圖 廣西房產智能外呼系統推薦 漯河外呼調研線路 電銷專用外呼線路 電銷外呼系統是違法的嗎

最近閑來無事給自己寫了家庭財務收支管理系統,也就包含支出管理,收入管理和一些統計功能。

先說登錄模塊,因為涉及GET和POST請求,這些東西都是能被監控和抓取的所以就考慮這使用RSA加密解密方式傳輸用戶名和密碼參數,頁面JS如下: 

/*需要引入三個JS文件,BigInt.js、RSA.js和Barrett.js,用到cookie則需要引入jquery.cookie.js文件*/
//與后臺交互獲取公鑰
function getPublicKey() {
 var pubKey = '';
 if ($.cookie('publicKey') == null) {
  $.ajax({
   url: "/Account/GetRsaPublicKey",
   type: "get",
   contentType: "application/x-www-form-urlencoded; charset=utf-8",
   async: false,
   data: {},
   dataType: "json",
   success: function (data) {
    if (data.Code == 0) {
     pubKey = data.RsaPublicKey + "," + data.Key;
     $.cookie('publicKey', pubKey, { expires: 1 / 1440 });
    } else {
     Config.Method.JudgeCode(data, 1);
    }
   }
  });
 } else {
  pubKey = $.cookie('publicKey');
 }
 return pubKey;
}
//公鑰加密用戶密碼Pwd為RSA加密后參數
function rsaEncrypt(pwd) {
 var publicKey = getPublicKey();
 setMaxDigits(129);
 var rsaKey = new RSAKeyPair(publicKey.split(",")[0], "", publicKey.split(",")[1]);
 var pwdRtn = encryptedString(rsaKey, pwd);
 return pwdRtn + "," + publicKey.split(",")[2];
}
//POST登錄請求,參數
script type="text/javascript">
 $(function () {
  $('#btnSubmit').live('click', function () {
   var uName = $('#u').val();
   var pwd = $('#p').val();
   if (uName == '') {
    alert('用戶名不能為空');
    return;
   }
   if (pwd == '') {
    alert('用戶密碼不能為空');
    return;
   }
   var enPwd = rsaEncrypt(pwd);
   $.ajax({
    type: "POST",
    url: "/Account/UserLogin",
    data: { 'UserName': uName, 'Pwd': enPwd.split(",")[0], 'Key': enPwd.split(",")[1], 'RUrl': $('#hiddenUrl').val() },
    contentType: "application/x-www-form-urlencoded; charset=utf-8",
    async: false,
    dataType: "json",
    success: function (data) {
     if (data.result == true) {
      window.location.href = data.url;
      return false;
     } else {
      $('#msg').text(data.message);
     }
    },
    error: function (XMLHttpRequest, textStatus, errorThrown) {
     $('#msg').text(XMLHttpRequest.status + '||' + XMLHttpRequest.readyState + '||' + textStatus);
    }
   });
  });
 })
/script>

前臺加密完成后就需要后臺做解密處理,解密完成后需要使用MD5加密現有密碼與數據庫中用戶密碼進行比較驗證,如果驗證通過則需要寫入cookie以便下次用戶能自   動登錄,由于cookie中我不希望用戶名和密碼都明碼存儲,我這里用到了AES加密的方式,自定義一個32位的加密密鑰對cookie進行加密解密處理,后臺c#代碼如下:

[HttpPost]
  public JsonResult UserLogin(string UserName, string Pwd, string Key, string RUrl)
  {
   string privateKey = Common.CacheGet(Key) as string;
   if (!string.IsNullOrEmpty(privateKey))
   {
    if (string.IsNullOrEmpty(UserName))
    {
     return Json(new { result = false, message = "用戶名為空" }, JsonRequestBehavior.AllowGet);
    }
    if (string.IsNullOrEmpty(Pwd))
    {
     return Json(new { result = false, message = "用戶密碼為空" }, JsonRequestBehavior.AllowGet);
    }
    string pwd = Common.DecryptRSA(Pwd, privateKey);//私鑰解密
    string md5Pwd = Common.NoneEncrypt(Common.NoneEncrypt(Common.NoneEncrypt(pwd, 1), 1), 1);//將解密后的值md5加密3次
    AccountUnserInfo userInfo = bll.GetUserInfo(UserName.Trim(), md5Pwd);
    if (userInfo != null  userInfo.U_Id > 0)//用戶信息存在
    {
     //用戶名、密碼放入cookie
     HttpCookie cookie = new HttpCookie("fw_izz");
     //AES加密Cookie
     cookie["u_name"] = AesEncryptHelper.EncryptAes(UserName);
     cookie["u_pwd"] = AesEncryptHelper.EncryptAes(pwd);
     cookie.Expires = DateTime.Now.AddDays(7);
     Response.Cookies.Add(cookie);
     if (!string.IsNullOrEmpty(RUrl))//接收隱藏域中的值
     {
      return Json(new { result = true, message = "成功", url = RUrl });
     }
     else
     {
      return Json(new { result = true, message = "成功", url = "/AccountDetail/Index" });
     }
    }
    else
    {
     return Json(new { result = false, message = "用戶信息不存在", url = "/Account/Index" });
    }
   }
   else
   {
    return Json(new { result = false, message = "非法秘鑰", url = "/Account/Index" });
   }
  }

各種加密解密方法、Cache操作以及cookie操作代碼如下:  

public class Common
 {
  /// summary>
  /// 產生一組RSA公鑰、私鑰
  /// /summary>
  /// returns>/returns>
  public static Dictionarystring, string> CreateRsaKeyPair()
  {
   var keyPair = new Dictionarystring, string>();
   var rsaProvider = new RSACryptoServiceProvider(1024);
   RSAParameters parameter = rsaProvider.ExportParameters(true);
   keyPair.Add("PUBLIC", BytesToHexString(parameter.Exponent) + "," + BytesToHexString(parameter.Modulus));
   keyPair.Add("PRIVATE", rsaProvider.ToXmlString(true));
   return keyPair;
  }

  /// summary>
  /// RSA解密字符串
  /// /summary>
  /// param name="encryptData">密文/param>
  /// param name="privateKey">私鑰/param>
  /// returns>明文/returns>
  public static string DecryptRSA(string encryptData, string privateKey)
  {
   string decryptData = "";
   try
   {
    var provider = new RSACryptoServiceProvider();
    provider.FromXmlString(privateKey);

    byte[] result = provider.Decrypt(HexStringToBytes(encryptData), false);
    ASCIIEncoding enc = new ASCIIEncoding();
    decryptData = enc.GetString(result);
   }
   catch (Exception e)
   {
    throw new Exception("RSA解密出錯!", e);
   }
   return decryptData;
  }

  private static string BytesToHexString(byte[] input)
  {
   StringBuilder hexString = new StringBuilder(64);

   for (int i = 0; i  input.Length; i++)
   {
    hexString.Append(String.Format("{0:X2}", input[i]));
   }
   return hexString.ToString();
  }

  public static byte[] HexStringToBytes(string hex)
  {
   if (hex.Length == 0)
   {
    return new byte[] { 0 };
   }
   if (hex.Length % 2 == 1)
   {
    hex = "0" + hex;
   }
   byte[] result = new byte[hex.Length / 2];
   for (int i = 0; i  hex.Length / 2; i++)
   {
    result[i] = byte.Parse(hex.Substring(2 * i, 2), System.Globalization.NumberStyles.AllowHexSpecifier);
   }
   return result;
  }

  private static ObjectCache Cache
  {
   get { return MemoryCache.Default; }
  }
  /// summary>
  /// 獲取緩存
  /// /summary>
  /// param name="key">/param>
  /// returns>/returns>
  public static object CacheGet(string key)
  {
   return Cache[key];
  }
  /// summary>
  /// 設置緩存
  /// /summary>
  /// param name="key">/param>
  /// param name="data">/param>
  /// param name="cacheTime">/param>
  public static void CacheSet(string key, object data, int cacheTime)
  {
   CacheItemPolicy policy = new CacheItemPolicy();
   policy.AbsoluteExpiration = DateTime.Now + TimeSpan.FromMinutes(cacheTime);
   Cache.Add(new CacheItem(key, data), policy);
  }
  /// summary>
  /// 判斷緩存是否存在
  /// /summary>
  /// param name="key">/param>
  /// returns>/returns>
  public static bool IsSet(string key)
  {
   return (Cache[key] != null);
  }
  /// summary>
  /// 緩存失效
  /// /summary>
  /// param name="key">/param>
  public static void CacheRemove(string key)
  {
   Cache.Remove(key);
  }
  /// summary>
  /// 對字符串進行加密(不可逆)
  /// /summary>
  /// param name="Password">要加密的字符串/param>
  /// param name="Format">加密方式,0 is SHA1,1 is MD5/param>
  /// returns>/returns>
  public static string NoneEncrypt(string Password, int Format)
  {
   string strResult = "";
   switch (Format)
   {
    case 0:
     strResult = FormsAuthentication.HashPasswordForStoringInConfigFile(Password, "SHA1");
     break;
    case 1:
     strResult = FormsAuthentication.HashPasswordForStoringInConfigFile(Password, "MD5");
     break;
    default:
     strResult = Password;
     break;
   }
   return strResult;
  }
 }

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • js實現登錄注冊框手機號和驗證碼校驗(前端部分)
  • JavaScript 完成注冊頁面表單校驗的實例
  • JavaScript注冊時密碼強度校驗代碼
  • js簡單實現用戶注冊信息的校驗代碼
  • JS校驗與最終登陸界面功能完整示例
  • 詳解AngularJs HTTP響應攔截器實現登陸、權限校驗
  • Angular.js與node.js項目里用cookie校驗賬戶登錄詳解
  • jsp登陸校驗演示 servlet、login、success
  • 攔截JSP頁面,校驗是否已登錄詳解及實現代碼
  • javascript使用正則表達式實現注冊登入校驗

標簽:湘西 綏化 焦作 湖北 試駕邀約 無錫 銅陵 欽州

巨人網絡通訊聲明:本文標題《ASP.NET MVC結合JavaScript登錄、校驗和加密》,本文關鍵詞  ASP.NET,MVC,結合,JavaScript,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《ASP.NET MVC結合JavaScript登錄、校驗和加密》相關的同類信息!
  • 本頁收集關于ASP.NET MVC結合JavaScript登錄、校驗和加密的相關信息資訊供網民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    成人免费毛片a| 国产三级欧美三级日产三级99| 成人免费在线观看入口| 欧美日本国产一区| 国产成人亚洲综合a∨婷婷| 亚洲黄色片在线观看| 这里只有精品电影| 91网站最新地址| 久久国产精品第一页| 亚洲视频一二区| 国产午夜精品久久久久久久 | 成人午夜在线免费| 天天影视涩香欲综合网| 日韩美女视频一区二区| 国产亚洲制服色| 精品乱码亚洲一区二区不卡| 在线观看区一区二| 欧美亚洲国产一区二区三区va | 色偷偷一区二区三区| 国产在线观看免费一区| 日本美女一区二区三区| 蜜臀av性久久久久蜜臀aⅴ四虎| 一级女性全黄久久生活片免费| 国产精品久久国产精麻豆99网站| 欧美成人一区二区三区片免费| 欧洲视频一区二区| 欧美性色黄大片| 欧美一区三区二区| 欧美一卡二卡在线| 日韩一区二区三区高清免费看看| 欧美日韩一区二区在线观看| 欧美猛男超大videosgay| 欧美一区二区日韩| 国产亚洲一区二区三区在线观看| 久久久www成人免费无遮挡大片 | 日韩三级高清在线| 久久理论电影网| 久久久久国产一区二区三区四区| 国产欧美一区二区精品性色| 中文字幕亚洲精品在线观看| 亚洲一区二区不卡免费| 精品一区在线看| 欧美在线一二三| www久久久久| 亚洲影院免费观看| 毛片不卡一区二区| 91成人在线免费观看| 日韩美一区二区三区| 欧美经典一区二区三区| 午夜影院久久久| 色综合久久综合中文综合网| 欧美午夜在线观看| 中文在线资源观看网站视频免费不卡| 亚洲精品第一国产综合野| 久久精品国产亚洲a| 欧美日韩成人综合天天影院 | 久久一区二区三区四区| 舔着乳尖日韩一区| 91视频国产资源| 国产精品久久久一本精品| 国产精一区二区三区| 日韩精品影音先锋| 免费观看成人鲁鲁鲁鲁鲁视频| 成人精品电影在线观看| 国产亚洲精品资源在线26u| 美洲天堂一区二卡三卡四卡视频 | 欧美四级电影网| 亚洲狠狠丁香婷婷综合久久久| 成人免费观看视频| 亚洲欧洲无码一区二区三区| 国产成人精品1024| 亚洲欧美另类小说视频| 欧洲国内综合视频| 麻豆精品一区二区| 欧美一区二区三级| 伦理电影国产精品| 精品黑人一区二区三区久久| 久久99国产精品久久99果冻传媒| 日韩一区二区在线播放| 国产精品18久久久久久久久| 欧美国产精品中文字幕| 91激情在线视频| 午夜精品成人在线| 国产色产综合产在线视频| 91久久线看在观草草青青| 午夜成人免费电影| 亚洲精品在线观看视频| 色综合中文综合网| 国产精品亚洲а∨天堂免在线| 久久蜜桃av一区二区天堂 | 99国内精品久久| 麻豆视频一区二区| 中文字幕一区免费在线观看| 欧美日韩国产bt| 99久久亚洲一区二区三区青草 | 国产成人自拍在线| 日韩极品在线观看| 亚洲激情在线播放| 亚洲乱码中文字幕| 亚洲视频一区二区在线观看| 久久久久久久久久久久电影| 在线免费观看不卡av| 99综合电影在线视频| 国产凹凸在线观看一区二区 | 久久精品国产精品亚洲精品| 一区二区三区不卡在线观看| 国产亚洲一区二区三区四区| 欧美va日韩va| 久久精品这里都是精品| 国产香蕉久久精品综合网| 精品国产区一区| www日韩大片| 国产精品欧美极品| 亚洲影视在线观看| 日韩国产欧美视频| 国产乱色国产精品免费视频| 韩日av一区二区| 国产成人夜色高潮福利影视| 国产成人av一区| 91小视频在线| 欧美久久婷婷综合色| 欧美精品一区二区精品网| 欧美精品一区二区三区视频| 国产欧美一区二区三区网站| 一区二区三区波多野结衣在线观看 | 136国产福利精品导航| 亚洲精品中文字幕乱码三区 | 亚洲va国产天堂va久久en| 人人狠狠综合久久亚洲| 国产精品自拍一区| 欧美日韩在线直播| 国产偷国产偷精品高清尤物| 一区二区三区四区中文字幕| 日韩电影在线观看电影| 99视频精品免费视频| 日韩欧美黄色影院| 亚洲韩国精品一区| 床上的激情91.| 久久亚洲春色中文字幕久久久| 亚洲成a人v欧美综合天堂| 国产激情精品久久久第一区二区| 欧美日韩精品福利| 亚洲国产精品自拍| 一本色道**综合亚洲精品蜜桃冫| 欧美刺激午夜性久久久久久久| 亚洲一区二区三区自拍| 99国产精品一区| 中文字幕+乱码+中文字幕一区| 国产高清在线观看免费不卡| 日韩免费福利电影在线观看| 久久精品国产第一区二区三区| 欧洲av在线精品| 午夜欧美大尺度福利影院在线看| 精品视频在线免费观看| 午夜亚洲国产au精品一区二区| 99久久综合狠狠综合久久| 亚洲日本中文字幕区| 99久久夜色精品国产网站| 亚洲欧美日韩国产另类专区| 欧洲日韩一区二区三区| 调教+趴+乳夹+国产+精品| 日韩亚洲欧美中文三级| 精品一区二区三区免费观看| 日本一二三四高清不卡| 色悠悠久久综合| 久久精品国产免费看久久精品| 久久九九全国免费| 欧美性猛交xxxx黑人交| 久久66热re国产| 亚洲激情五月婷婷| 久久这里只有精品首页| 色猫猫国产区一区二在线视频| 日韩国产在线观看| 一区二区三区日韩精品视频| 欧美一区二区精美| 91福利精品第一导航| 国产成人综合在线观看| 青娱乐精品在线视频| 一区二区免费看| 日韩伦理免费电影| 国产三区在线成人av| 欧美一级午夜免费电影| 7777精品伊人久久久大香线蕉经典版下载| 国内精品在线播放| 七七婷婷婷婷精品国产| 夜夜操天天操亚洲| 一区二区三区在线视频免费观看| 国产精品国产三级国产有无不卡| 日韩欧美色电影| 欧美成人猛片aaaaaaa| 制服丝袜av成人在线看| 91精品国产乱码| 宅男噜噜噜66一区二区66| 欧美精品乱人伦久久久久久| 91蜜桃在线观看| 欧美偷拍一区二区| 欧美日本乱大交xxxxx| 欧美一卡2卡三卡4卡5免费| 国产精品久久免费看| 国产精品三级电影|