asp.net中的窗体身份验证(完整篇之四:获得用户数据)
2009-05-28 15:14
651 查看
在《asp.net中的窗体身份验证(完整篇之三:用户登录页面) 》中介绍了如何创建一个自定义身份验证票,如何将自定义的身份验证票写入Cookie中。而在自定义的身份验证票中,可以传递一个用户数据,这个用户数据十分有用。可以用来存放用户权限等级、用户VIP号、用户角色等数据,而这些数据往往可以用来控制用户的权限范围。下面我们来看一下怎么样获得用户数据。
首先,修改web.config文件,这个就不再多介绍了,不明白的朋友去查看《asp.net中的窗体身份验证(完整篇之一:创建asp.net的窗体身份验证方式) 》和《asp.net中的窗体身份验证(完整篇之附录:web.config中相应节点详解) 》
其次,创建用户登录页面,在本例中为AdminLogin.aspx,在单击登录按钮后,代码如下所示:
在本例中,为了简单起见,只要用户名为1、密码为2,或用户名为3、密码为4,都认为身份验证通过。身份验证通过后,创建一个身份验证票,如果用户名为1,身份验证票中传递的用户数据为“admin”,如果用户名为3,身份验证中传递的用户数据为“reader”。然后加密身份验证票,写入客户端Cookie。
第三,创建一个test.aspx文件,在该文件中获得用户数据,如以下代码所示。
在以上代码中,先使用Request.Cookies获得存放身份验证票的Cookie,其中Cookie名可以通过FormsAuthentication类的FormsCookieName属性获得。
由于身份验证票是加密后存放在Cookie中的,所以在获得Cookie值之后,必须将身份验证票解密。FormsAuthentication类的Decrypt()方法可以将加密后的身份验证票(也就是存放在Cookie中的字符串)解密,并返回解密后的身份验证票。在asp.net中使用FormsAuthenticationTicket类来代表身份验证票。
获得解密后的身份验证票后,可以通过FormsAuthenticationTicket类的Name属性返回经过验证的用户名,也可以通过UserData属性获得用户数据。
=============================
原创不容易,转载请注明出处。
相关链接:
1、asp.net中的窗体身份验证(最简单篇)
2、asp.net中的窗体身份验证(分目录验证篇)
3、asp.net中的窗体身份验证(完整篇之一:创建asp.net的窗体身份验证方式)
4、asp.net中的窗体身份验证(完整篇之二:asp.net的窗体身份验证过程)
5、asp.net中的窗体身份验证(完整篇之三:用户登录页面)
6、asp.net中的窗体身份验证(完整篇之四:获得用户数据)
7、asp.net中的窗体身份验证(完整篇之五:退出登录)
8、asp.net中的窗体身份验证(完整篇之附录:web.config中相应节点详解)
9、asp.net中的窗体身份验证(不同的角色访问不同的目录)
10、asp.net中的窗体身份验证(验证HTML文件)
11、asp.net中的窗体身份验证(完整篇之六:登出后不能通过后退回来面来的页面)
本例在VS2005中测试通过,源代码可以在http://www.aspxfans.com/myBlogFile/窗体身份验证:获得用户数据.rar 或http://download.csdn.net/source/1962462下载。
首先,修改web.config文件,这个就不再多介绍了,不明白的朋友去查看《asp.net中的窗体身份验证(完整篇之一:创建asp.net的窗体身份验证方式) 》和《asp.net中的窗体身份验证(完整篇之附录:web.config中相应节点详解) 》
其次,创建用户登录页面,在本例中为AdminLogin.aspx,在单击登录按钮后,代码如下所示:
protected void Button1_Click(object sender, EventArgs e) { Label1.Text = ""; //用户名 string UserName = TextBox1.Text; //密码 string UserPassword = TextBox2.Text; //用户角色 string UserRole = ""; //用户身份验证 if ((UserName == "1" && UserPassword == "2") || (UserName == "3" && UserPassword == "4")) { //判断用户权限 if (UserName == "1") { UserRole = "admin"; } else { UserRole = "reader"; } //创建一个身份验证票 FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1, "yundao", DateTime.Now, DateTime.Now.AddMinutes(30), false, UserRole); //将身份验证票加密 string EncrTicket = FormsAuthentication.Encrypt(ticket); //创建一个Cookie HttpCookie myCookie = new HttpCookie(FormsAuthentication.FormsCookieName, EncrTicket); //将Cookie写入客户端 Response.Cookies.Add(myCookie); //跳转到初始请求页或默认页面 Response.Redirect(FormsAuthentication.GetRedirectUrl("yundao",false)); } else { Label1.Text = "用户名为1,密码为2,或用户名为3,密码为4。请重新输入。"; } }
在本例中,为了简单起见,只要用户名为1、密码为2,或用户名为3、密码为4,都认为身份验证通过。身份验证通过后,创建一个身份验证票,如果用户名为1,身份验证票中传递的用户数据为“admin”,如果用户名为3,身份验证中传递的用户数据为“reader”。然后加密身份验证票,写入客户端Cookie。
第三,创建一个test.aspx文件,在该文件中获得用户数据,如以下代码所示。
protected void Page_Load(object sender, EventArgs e) { //获得存放身份验证票的Cookie值,这个值是经过加密的 string EncrTicket = Request.Cookies[FormsAuthentication.FormsCookieName].Value; //获得身份验证票 FormsAuthenticationTicket ticket = FormsAuthentication.Decrypt(EncrTicket); //从身份验证票中提取经过验证的用户名 string UserName = ticket.Name; //从身份验证票中提取用户数据 string UserData = ticket.UserData; Label1.Text = UserName + ",您好!您的权限为:" + UserData; }
在以上代码中,先使用Request.Cookies获得存放身份验证票的Cookie,其中Cookie名可以通过FormsAuthentication类的FormsCookieName属性获得。
由于身份验证票是加密后存放在Cookie中的,所以在获得Cookie值之后,必须将身份验证票解密。FormsAuthentication类的Decrypt()方法可以将加密后的身份验证票(也就是存放在Cookie中的字符串)解密,并返回解密后的身份验证票。在asp.net中使用FormsAuthenticationTicket类来代表身份验证票。
获得解密后的身份验证票后,可以通过FormsAuthenticationTicket类的Name属性返回经过验证的用户名,也可以通过UserData属性获得用户数据。
=============================
原创不容易,转载请注明出处。
相关链接:
1、asp.net中的窗体身份验证(最简单篇)
2、asp.net中的窗体身份验证(分目录验证篇)
3、asp.net中的窗体身份验证(完整篇之一:创建asp.net的窗体身份验证方式)
4、asp.net中的窗体身份验证(完整篇之二:asp.net的窗体身份验证过程)
5、asp.net中的窗体身份验证(完整篇之三:用户登录页面)
6、asp.net中的窗体身份验证(完整篇之四:获得用户数据)
7、asp.net中的窗体身份验证(完整篇之五:退出登录)
8、asp.net中的窗体身份验证(完整篇之附录:web.config中相应节点详解)
9、asp.net中的窗体身份验证(不同的角色访问不同的目录)
10、asp.net中的窗体身份验证(验证HTML文件)
11、asp.net中的窗体身份验证(完整篇之六:登出后不能通过后退回来面来的页面)
本例在VS2005中测试通过,源代码可以在http://www.aspxfans.com/myBlogFile/窗体身份验证:获得用户数据.rar 或http://download.csdn.net/source/1962462下载。
相关文章推荐
- asp.net中的窗体身份验证(完整篇之四:获得用户数据)
- asp.net中的窗体身份验证(完整篇之三:用户登录页面)
- asp.net中的窗体身份验证(完整篇之三:用户登录页面)
- asp.net中的窗体身份验证(完整篇之附录:web.config中相应节点详解)
- asp.net中的窗体身份验证(完整篇之附录:web.config中相应节点详解)
- asp.net中的窗体身份验证(完整篇之一:创建asp.net的窗体身份验证方式)
- asp.net中的窗体身份验证(完整篇之六:登出后不能通过后退回来面来的页面)
- asp.net中的窗体身份验证(完整篇之五:退出登录)
- asp.net中的窗体身份验证(完整篇之二:asp.net的窗体身份验证过程)
- asp.net中的窗体身份验证(完整篇之一:创建asp.net的窗体身份验证方式)
- asp.net中的窗体身份验证(完整篇之六:登出后不能通过后退回来面来的页面)
- asp.net中的窗体身份验证(完整篇之五:退出登录)
- asp.net中的窗体身份验证(完整篇之二:asp.net的窗体身份验证过程)
- ASP.Net 2.0窗体身份验证机制详解(FormsAuthentication) (转载)
- ASP.Net 2.0 窗体身份验证机制详解
- ASP.net基于窗体的身份验证
- asp.net中使用窗体身份验证
- 解释:ASP.NET 2.0 中的窗体身份验证
- asp.net基于窗体的身份验证
- ASP.NET 2.0 中的窗体身份验证