表单身份验证
来源:互联网 发布:国内烘焙食品行业数据 编辑:程序博客网 时间:2024/04/30 09:38
举例说明,要保护admin/admin.aspx页面只能被具有Admin角色的用户访问
一、web.config的配置
1、authentication节的配置
<authentication mode="Forms">
<forms name="cookieName" loginUrl="login.aspx" protection="All" timeout="20" path="/">
</forms>
</authentication>
2、location节的配置
<location path="User/Admin.aspx">
<system.web>
<authorization>
<allow roles="Admin" />
<deny users="*" />
</authorization>
</system.web>
</location>
注意:lcation节的定义要在system.web的定义之外
二、login.aspx
假设页面上有一个按钮ButtonLogin,则相应的事件处理程序为:
using System.Web.Security;
.............
private void ButtonLogin_Click(object sender, System.EventArgs e)
{
bool isLoggedIn = (自定义的函数,查询数据库,判断用户名、密码是否正确);
if (isLoggedIn == true)
{
string roles = (自定义的函数,从数据库中检索用户角色列表,以"|"分隔);
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(
1, // 版本号
"用户名称",
DateTime.Now,
DateTime.Now.AddMinutes(20), // cookie的过期时间
false, // cookie是否永久
roles);
string encryptedTicket = FormsAuthentication.Encrypt(ticket);
HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket);
Response.Cookies.Add(cookie);
Response.Redirect(FormsAuthentication.GetRedirectUrl("用户名称", false));
}
}
三、global.asax
using System.Security.Principal;
.......
protected void Application_AuthenticateRequest(Object sender, EventArgs e)
{
string cookieName = FormsAuthentication.FormsCookieName;
HttpCookie cookie = Context.Request.Cookies[cookieName];
if (cookie == null)
{
return;
}
FormsAuthenticationTicket ticket = null;
try
{
ticket = FormsAuthentication.Decrypt(cookie.Value);
}
catch
{
return;
}
if (ticket == null)
{
return;
}
string[] roles = ticket.UserData.Split(new char[]{'|'});
FormsIdentity id = new FormsIdentity(ticket);
GenericPrincipal principal = new GenericPrincipal(id, roles);
Context.User = principal;
}
四、本方法的缺陷和不足
1、如果用户没有权限,则停留在登陆页面要求用户再次输入用户名和密码;
2、客户端浏览器必须启用cookie,否则本方法不起作用;
- 表单身份验证
- Form表单身份验证例子
- 基于表单的身份验证
- 身份验证——表单验证
- WEB应用中的基本身份验证和表单身份验证
- WEB应用中的基本身份验证和表单身份验证
- WEB应用中的基本身份验证和表单身份验证
- WEB应用中的基本身份验证和表单身份验证
- 将表单身份验证用于 Active Directory
- ASP.Net基于表单的身份验证
- asp.net Forms(表单)身份验证
- sharepoint 基于AD的Form表单身份验证
- SharePoint 2013 基于表单 Membership 的身份验证
- 【JSP/SERVLET】Tomcat内置表单身份验证
- java web之基于表单的身份验证
- 身份验证
- 身份验证
- 身份验证
- 改变1995
- map 文件 帮助测试
- 看《神经侠侣》有感
- JasperReports 编程指南1.0
- 执行SP一例
- 表单身份验证
- 刷新SP到一数据库方便制作XSD文件
- GetIdeDiskSerialNumber
- XML VS. CSV
- javascript里的类思想
- 2005年在IT领域创业干点啥?
- Spring 编程入门十大问题解答
- 用 NASM 编写代码(转自http://www.codingnow.com/text/nasm.htm)
- Open question (2:)