亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

使用HttpContext的User屬性來實現用戶驗證

2019-11-18 12:02:28
字體:
來源:轉載
供稿:網友

  HttpContext類包含了個別HTTP請求的所有特定HTTP信息。這個示例主要是講如何使用HttpContext類中的User屬性來實現用戶驗證!
  
  用戶驗證是大部分asp.net WEB應用程序都要用到的,它在整個應用程序中占有很重要的地位,在.NET中,包含了很多種用戶驗證方式,如眾所周知的PassPort認證,Windows認證,Form認證等等,可是這些都很難滿足我們在實際應用中的需求,以致于很多朋友都是自己另外寫代碼來實現自己需要的功能,這讓我們在安全性以及系統效率上要考慮很多。
  
  實際上,ASP.NET中內置的用戶驗證機制功能非常強大,同時也具有非常好的的可擴展性,它能夠在HttpContext對象中生成一個名為User的屬性,這個屬性能讓我們訪問各種信息,包括用戶是否已驗證,用戶的類型,用戶名等等,我們還可以對該屬性的功能進性擴展,以實現我們的要求。
  
  分配給HttpContext.User的對象必須實現iprincipal接口,而IPRincipal定義的屬性之一是Identity,它必須實現Iidentity接口。因為,我們只要寫了實現這兩個接口的類,就可以在這些類中添加任何我們所需要的功能。
  
  首先,我們創建兩個實現Iprincipal和Iidentity的類,分另為MyIprincipal和MyIdentity
  
  MyIprincipal.cs
  
  using System;
  
  using System.Collections;
  
  namespace HttpContextUserEG
  
  {
  
  /// <summary>
  
  /// MyPrincipal 的摘要說明。
  
  /// </summary>
  
  /// 實現IPrincipal接口
  
  public class MyPrincipal : System.Security.Principal.IPrincipal
  
  {
  
  private System.Security.Principal.IIdentity identity;
  
  private ArrayList roleList;
  
  public MyPrincipal(string userID,string passWord)
  
  {
  
  //
  
  // TODO: 在此處添加構造函數邏輯
  
  //
  
  identity = new MyIdentity(userID,password);
  
  if(identity.IsAuthenticated)
  
  {
  
  //假如通過驗證則獲取該用戶的Role,這里可以修改為從數據庫
  
  //讀取指定用戶的Role并將其添加到Role中,本例中直接為用戶添加一個Admin角色
  
  roleList = new ArrayList();
  
  roleList.Add("Admin");
  
  }
  
  else
  
  {
  
  // do nothing
  
  }
  
  }
  
  public ArrayList RoleList
  
  {
  
  get
  
  {
  
  return roleList;
  
  }
  
  }
  
  #region IPrincipal 成員
  
  public System.Security.Principal.IIdentity Identity
  
  {
  
  get
  
  {
  
  // TODO: 添加 MyPrincipal.Identity getter 實現
  
  return identity;
  
  }
  
  set
  
  {
  
  identity = value;
  
  }
  
  }
  
  public bool IsInRole(string role)
  
  {
  
  // TODO: 添加 MyPrincipal.IsInRole 實現
  
  return roleList.Contains(role);;
  
  }
  
  #endregion
  
  }
  
  }
  
  MyIdentity.cs
  
  using System;
  
  namespace HttpContextUserEG
  
  {
  
  /// <summary>
  
  /// MyIdentity 的摘要說明。
  
  /// </summary>
  
  /// 實現IIdentity接口
  
  public class MyIdentity : System.Security.Principal.IIdentity
  
  {
  
  private string userID;
  
  private string password;
  
  public MyIdentity(string currentUserID,string currentPassword)
  
  {
  
  //
  
  // TODO: 在此處添加構造函數邏輯
  
  //
  
  userID = currentUserID;
  
  password = currentPassword;
  
  }
  
  private bool CanPass()
  
  {
  
  //這里朋友們可以根據自己的需要改為從數據庫中驗證用戶名和密碼,
  
  //這里為了方便我直接指定的字符串
  
  if(userID == "yan0lovesha" && password == "iloveshasha")
  
  {
  
  return true;
  
  }
  
  else
  
  {
  
  return false;
  
  }
  
  }
  
  public string Password
  
  {
  
  get
  
  {
  
  return password;
  
  }
  
  set
  
  {
  
  password = value;
  
  }
  
  }
  
  #region IIdentity 成員
  
  public bool IsAuthenticated
  
  {
  
  get
  
  {
  
  // TODO: 添加 MyIdentity.IsAuthenticated getter 實現
  
  return CanPass();
  
  }
  
  }
  
  public string Name
  
  {
  
  get
  
  {
  
  // TODO: 添加 MyIdentity.Name getter 實現
  
  return userID;
  
  }
  
  }
  
  //這個屬性我們可以根據自己的需要來靈活使用,在本例中沒有用到它
  
  public string AuthenticationType
  
  {
  
  get
  
  {
  
  // TODO: 添加 MyIdentity.AuthenticationType getter 實現
  
  return null;
  
  }
  
  }
  
  #endregion
  
  }
  
  }
  
  在完成了這兩個類之后我們還要創建一個自己的Page類,來配合我們的驗證,這里我們將其命名為MyPage,繼續自Page類
  
  MyPage.cs
  
  using System;
  
  using System.Collections;
  
  namespace HttpContextUserEG
  
  {
  
  /// <summary>
  
  /// MyPage 的摘要說明。
  
  /// </summary>
  
  /// 繼續自Page類
  
  public class MyPage : System.Web.UI.Page
  
  {
  
  public MyPage()
  
  {
  
  //
  
  // TODO: 在此處添加構造函數邏輯
  
  //
  
  }
  
  protected override void OnInit(EventArgs e)
  
  {
  
  base.OnInit (e);
  
  this.Load +=new EventHandler(MyPage_Load);
  
  }
  
  //在頁面加載的時候從緩存中提取用戶信息
  
  private void MyPage_Load(object sender, System.EventArgs e)
  
  {
  
  if(Context.User.Identity.IsAuthenticated)
  
  {
  
  if(Context.Cache["UserMessage"] != null)
  
  {
  
  Hashtable userMessage = (Hashtable)Context.Cache["UserMessage"];
  
  MyPrincipal principal = new MyPrincipal(userMessage["UserID"].ToString(),userMessage["UserPassword"].ToString());
  
  Context.User = principal;
  
  }
  
  }
  
  }
  
  }
  
  }
  
  下面就是我們的界面WebForm.aspx和WebForm.aspx.cs
  
  WebForm.aspx
  
  <%@ Page language="c#" Codebehind="WebForm1.aspx.cs" AutoEventWireup="false" Inherits="HttpContextUserEG.WebForm1" %>
  
  <!DOCTYPE Html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
  
  <HTML>
  
  <HEAD>
  
  <title>WebForm1</title>
  
  <meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR">
  
  <meta content="C#" name="CODE_LANGUAGE">
  
  <meta content="javascript" name="vs_defaultClientScript">
  
  <meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">
  
  </HEAD>
  
  <body>
  
  <form id="Form1" method="post" runat="server">
  
  <P><FONT face="宋體">用戶名:
  
  <asp:TextBox id="tbxUserID" runat="server"></asp:TextBox><BR>
  
  密 碼:
  
  <asp:TextBox id="tbXPassword" runat="server" TextMode="Password"></asp:TextBox></FONT></P>
  
  <P><FONT face="宋體">
  
  <asp:Button id="BTnLogin" runat="server" Text="登錄"></asp:Button>
  
  <asp:Label id="lblLoginMessage" runat="server"></asp:Label></FONT></P>
  
  <

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩视频在线免费观看| 亚洲成人在线视频播放| 欧洲成人免费视频| 国产精品嫩草影院久久久| 欧美理论片在线观看| 疯狂欧美牲乱大交777| 精品一区二区三区三区| 亚洲伊人第一页| 中文字幕在线看视频国产欧美| 欧美日韩国产在线播放| 91免费看国产| 日本人成精品视频在线| 久久精品99久久久香蕉| 成人网中文字幕| 精品国内产的精品视频在线观看| 久久久久久噜噜噜久久久精品| 激情亚洲一区二区三区四区| 日韩美女毛茸茸| 国产激情综合五月久久| 久久久精品影院| 亚洲日韩欧美视频| 欧美成人精品一区二区| 欧美日韩国产精品| 一本色道久久综合狠狠躁篇怎么玩| 国产午夜精品免费一区二区三区| 亚洲春色另类小说| 国产91色在线|免| 精品国模在线视频| 欧美日本高清视频| 久久久久久久久久久久久久久久久久av| 国产精品第2页| 国产69精品久久久久9| 中文字幕日韩专区| 国产亚洲精品久久| 欧美综合在线第二页| 91国产美女视频| 亚洲肉体裸体xxxx137| 国产综合久久久久久| 欧美日韩综合视频网址| 午夜精品免费视频| 91国产中文字幕| 美女av一区二区| 在线观看国产成人av片| 亚洲已满18点击进入在线看片| 日韩三级影视基地| 一区二区三区四区视频| 91影视免费在线观看| 欧美国产一区二区三区| 亚洲精品电影在线观看| 国产91精品最新在线播放| 亚洲人成网站色ww在线| 91精品视频在线| 国产91热爆ts人妖在线| 精品国偷自产在线视频99| 97视频在线观看亚洲| 欧美主播福利视频| 国产v综合ⅴ日韩v欧美大片| 狠狠色噜噜狠狠狠狠97| 亚洲剧情一区二区| 九九热这里只有在线精品视| 日韩av在线精品| 91成人国产在线观看| 国产中文字幕91| 51午夜精品视频| 久久久久久久av| 国产免费观看久久黄| 国产视频精品一区二区三区| 亚洲国产成人久久综合一区| 亚洲经典中文字幕| 久久久精品在线观看| 国产精品a久久久久久| 欧美性猛交xxxx富婆弯腰| 97久久久久久| 欧美亚洲国产另类| 91麻豆桃色免费看| 亚洲黄色免费三级| 欧美丰满少妇xxxxx| 久久精品国产成人精品| www.日本久久久久com.| 国产精品久久二区| 欧美一区二区色| 欧美日韩激情视频8区| 日韩在线视频观看正片免费网站| 欧美精品九九久久| 综合久久五月天| 亚洲视频在线观看免费| 欧美成人午夜激情视频| 成人激情免费在线| 在线视频亚洲欧美| 日韩一区二区福利| 久久久久久久久久久成人| 日韩欧美国产高清91| 亚洲欧美一区二区三区在线| 亚洲国产精品推荐| 成年人精品视频| 性色av一区二区三区红粉影视| 亚洲图片欧美午夜| 91在线精品视频| 欧美日韩国产二区| 亚洲一区二区三区乱码aⅴ| 色中色综合影院手机版在线观看| 国产亚洲精品美女久久久久| 久久伊人精品视频| 成人国产精品久久久| 国产精品久久国产精品99gif| 国产福利成人在线| 亚洲成人久久久| 亚洲丝袜av一区| 久久久久久国产| 一区二区国产精品视频| 亚洲国产高清自拍| 欧美电影在线观看完整版| 国产成人a亚洲精品| 国产精品第2页| 欧洲亚洲免费在线| 国产精品久久久久国产a级| 久久国产精品网站| 7m精品福利视频导航| 日韩精品在线影院| 国产精品九九九| 久久亚洲国产成人| 国产精品一区电影| 夜夜嗨av色综合久久久综合网| 久久综合色88| 久久男人的天堂| 亚洲国产成人av在线| 孩xxxx性bbbb欧美| 国产xxx69麻豆国语对白| 欧美国产日本高清在线| 亚洲美女性视频| 久久精品国产欧美亚洲人人爽| 国产精品情侣自拍| 欧亚精品在线观看| 97人人爽人人喊人人模波多| 日韩免费av一区二区| 91九色精品视频| 欧美人交a欧美精品| 美乳少妇欧美精品| 亚洲第一福利网站| 欧美日韩在线视频观看| 久久久久久久久久久亚洲| 97香蕉久久超级碰碰高清版| 影音先锋欧美精品| 国产精品福利网| 26uuu亚洲伊人春色| 欧美激情视频一区二区三区不卡| 亚洲精品永久免费| 久久97精品久久久久久久不卡| 日韩精品在线视频美女| 国产精品免费视频久久久| 国产精品va在线| 91地址最新发布| 91视频免费在线| 欧美激情影音先锋| 国产69久久精品成人看| 国产精品亚洲片夜色在线| 国内精品久久久久久久| 中文字幕一区日韩电影| 国产午夜精品久久久| 欧美成人午夜免费视在线看片| 亚洲国产精品成人精品| 国产欧美一区二区三区四区| 91久久精品久久国产性色也91| 91精品中文在线|