知识大全 使用HttpContext的User属性来实现用户验证

Posted 属性

篇首语:不要以为你的努力可以一劳永逸,权当做你始终一无所有。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 使用HttpContext的User属性来实现用户验证相关的知识,希望对你有一定的参考价值。

使用HttpContext的User属性来实现用户验证  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  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 == yan lovesha && 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= WebForm aspx cs AutoEventWireup= false Inherits= HttpContextUserEG WebForm %>    <!DOCTYPE HTML PUBLIC //W C//DTD HTML Transitional//EN >    <HTML>    <HEAD>    <title>WebForm </title>    <meta content= Microsoft Visual Studio NET name= GENERATOR >    <meta content= C# name= CODE_LANGUAGE >    <meta content= JavaScript name= vs_defaultClientScript >    <meta content= name= vs_targetSchema >    </HEAD>    <body>    <form id= Form 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>    < cha138/Article/program/Java/hx/201311/26002

相关参考

知识大全 asp用户注册实例程序

  asp教程用户注册实例程序  建立access数据库教程dbmdb在其中建立数据表user字段分别为u_uid(自动)u_user(用户名文本型)u_pass(密码文本型)四建立接收registe

知识大全 如何使sendmail支持大写的用户名

  sendmail对用户名大小写敏感如何使得发送给USER@hostdomain能正确发送给user@hostdomain而不是被弹回呢?  如果是sendmail以上版本可以在mc文件里面加上  

知识大全 更改Oracle用户名及外部用户验证授权

更改Oracle用户名及外部用户验证授权  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!我的测试机上

知识大全 .net WinForm用户控件开发:用户控件复杂属性设置

.netWinForm用户控件开发:用户控件复杂属性设置  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下

知识大全 用户登录的验证完整程序

  publicStringvalidateUser(StringinputUseridStringinputPwd)  throwsSQLException  StringreturnString=

知识大全 .net WinForm用户控件开发:用户控件的基本属性设置

.netWinForm用户控件开发:用户控件的基本属性设置  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一

知识大全 .net WinForm用户控件开发:用户控件下拉式属性设置

.netWinForm用户控件开发:用户控件下拉式属性设置  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一

知识大全 用户登录验证的JSP完整程序

用户登录验证的JSP完整程序  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  publicStri

知识大全 .net WinForm用户控件开发:用户控件弹出式属性设置

.netWinForm用户控件开发:用户控件弹出式属性设置  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一

知识大全 浅谈Struts2验证框架及用户注册

浅谈Struts2验证框架及用户注册  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Struts