Asp.net的身份验证有有三种,分别是"Windows | Forms | Passport",其中又以Forms验证用的最多,也最灵活。
Forms 验证方式对基于用户的验证授权提供了很好的支持,可以通过一个登录页面验证用户的身份,将此用户的身份发回到客户端的Cookie,之后此用户再访问这个 web应用就会连同这个身份Cookie一起发送到服务端。服务端上的授权设置就可以根据不同目录对不同用户的访问授权进行控制了
同时也支持角色进行控制。可以在web.config中进行配置,如果要使用forms进行身份验证的话,就需要在web.config中把<authentication mode="Windows"/>话语改成以下话语:
<authentication mode="Forms">
<forms name="auth" loginUrl="logon.aspx" timeout="30" protection="All" path="/" defaultUrl="User/register.aspx"></forms>
</authentication>
因为需要设置身份验证所以需要设置成不能使用匿名登录,设置如下:
<!--禁止匿名用户登录-->
<authorization>
<deny users="?"/>
</authorization>
上面设置完就说明你的网站是使用Forms身份验证了。
设置访问权限可以如下设置:
<!--设置目录访问权限 该目录下的url不允许匿名访问,不允许3这个用户登录-->
<location path="model">
<system.web>
<authorization>
<deny users="?"/>
<deny users="3"/>
</authorization>
</system.web>
</location>
<!--设置目录访问权限 匿名用户可以访问-->
<location path="User/register.aspx">
<system.web>
<authorization>
<allow users="?" />
</authorization>
</system.web>
</location>
<!--设置目录访问权限,设置单个页面的权限-->
<location path="visit.aspx">
<system.web>
<authorization>
<allow roles="admin" />
<deny users="*"/>
</authorization>
</system.web>
</location>
<system.web>
在登录页面写下如下代码:
protected void btnLogon_Click(object sender, EventArgs e)
{
string user = this.userName.Text; //读取用户名
// string password = TextBoxPassword.Text; //读取密码
if (Confirm(user, "") == true) //confirm方法用来验证用户合法性的
{
string userRoles = UserToRole(user); //调用UserToRole方法来获取role字符串
FormsAuthenticationTicket Ticket = new FormsAuthenticationTicket(1, user, DateTime.Now, DateTime.Now.AddMinutes(30), false, userRoles, "/"); //建立身份验证票对象
string HashTicket = FormsAuthentication.Encrypt(Ticket); //加密序列化验证票为字符串
HttpCookie UserCookie = new HttpCookie(FormsAuthentication.FormsCookieName, HashTicket);
//生成Cookie
FormsAuthentication.SetAuthCookie(user, false); //输出Cookie
Response.Cookies.Add(UserCookie);//这个为了实现角色登录
Response.Redirect(FormsAuthentication.GetRedirectUrl(user, false)); // 重定向到用户申请的初始页面
}
else
{
// 用户身份未被确认时的代码
Response.Write("登录失败!");
}
}
分角色登录的话需要重写这个类RoleProvider
public override string[] GetRolesForUser(string username)
{
FormsIdentity Id = HttpContext.Current.User.Identity as FormsIdentity;
if (Id != null)
{
return Id.Ticket.UserData.Split(new Char[] { ',' });
}
return null;
}
还需要在web.config中写入如下配置:
<roleManager defaultProvider="MyRoleProvider"
enabled="true"
cacheRolesInCookie="true"
cookieName=".ASPROLES"
cookieTimeout="30"
cookiePath="/"
cookieRequireSSL="false"
cookieSlidingExpiration="true"
cookieProtection="All" >
<providers>
<clear />
<add name="MyRoleProvider"
type="MyRoleProvider"
writeExceptionsToEventLog="false" />
</providers>
</roleManager>
源代码下载
分享到:
相关推荐
总之,ASP.NET Forms身份认证提供了一套强大的机制,能够灵活地处理用户登录、权限控制和跨服务器认证,是构建安全Web应用程序的基础。开发者需要理解其工作原理,以便有效地实现和维护安全的身份验证系统。
案例中实现了Forms身份验证,还实现了net内部的角色,值得大家学习参考. Forms验证流程: 1.为用户创建一个身份验证的票据 2.对身份验证的票据进行加密 3.创建一个cookie,把加密的票据保存在cookie中 4.向HTTP...
这段配置表明应用使用Forms身份验证,登录页面是`~/Account/Login.aspx`,且所有未认证的用户都被拒绝访问(`?`代表未认证用户)。 总的来说,ASP.NET Forms身份认证提供了一套安全、灵活的方法来管理用户身份和...
在这个实例中,我们将深入探讨如何在ASP.NET中设置和使用Forms身份验证。 首先,我们需要在Web.config配置文件中定义身份验证模式为"Forms"。这可以通过以下XML代码完成: ```xml <authentication mode="Forms...
ASP.NET的身份验证机制主要分为三种类型:Windows身份验证、Forms身份验证和OAuth身份验证。在本例中,我们关注的是Forms身份验证,这是最常见的Web应用身份验证方式。 1. **Forms身份验证**:Forms身份验证通过...
在配置文件中,我们需要设置 authentication 模式为 Forms,這樣 ASP.NET 就会使用窗体身份验证来验证用户的身份。同时,我们还需要设置 protection 属性来指定 Cookie 的保护级别。 在登录页面中,我们需要添加...
在ASP.NET中,基于Forms的身份验证提供了一种灵活的方式来控制应用程序的访问权限,尤其是在需要支持非Windows用户身份验证的情况下。这种验证方式不依赖于Windows集成安全,而是通过自定义的登录页面和会话管理机制...
总的来说,ASP.NET Forms身份验证提供了一种简单而强大的机制,用于管理用户登录、保持会话状态以及控制资源的访问权限。它通过Cookie机制在客户端和服务器之间安全地传递身份信息,为Web应用提供了基础的安全保障。...
在ASP.NET中,有多种身份验证模式,如Windows身份验证、 Forms身份验证和基于Token的身份验证。在创建登录窗体时,通常使用Forms身份验证,因为它提供了一种灵活的方式来处理用户登录。 创建登录窗体的过程通常包括...
Asp.Net Forms认证是.NET Framework中用于Web应用程序的身份验证机制,它是ASP.NET应用程序安全性的基石。此认证方式允许开发者创建安全的网站,控制用户访问权限,确保只有经过身份验证的用户才能访问特定的资源。 ...
主要有三种身份验证模式:Windows身份验证、Forms身份验证和Passport身份验证。在大多数Web应用中,Forms身份验证是最常用的,因为它允许非Windows环境下的用户认证。 身份验证票是Forms身份验证的核心组成部分。当...
Forms身份验证是ASP.NET框架提供的一种常见的身份验证方法,主要用于确保只有合法用户能够访问受保护的资源。本篇文章将深入探讨Forms身份验证的工作原理、实现方式以及与票证(Ticket)和Cookie的关系。 **1. ...
在ASP.NET中,身份验证模式可以设置为多种类型,如Windows、Forms、Passport等,而Forms身份验证是常用的一种,特别是在非域环境下的Web应用。 在上述例子中,我们看到ASP.NET Forms身份认证通过Web.config文件进行...
关于登录验证,ASP.NET提供了内置的Forms身份验证机制。当用户提交登录信息后,服务器会验证这些信息是否匹配数据库中存储的记录。如果验证成功,用户会被标记为已认证,然后可以通过`Session`或`Forms...
表单身份验证(Forms Authentication)是一种由 ASP.NET 提供的用于自定义用户身份验证的机制。它允许开发者创建一个登录页面来处理用户的登录请求,并且可以为已验证的用户提供一个特定的 Cookie,这个 Cookie 可以...
本文分别以ASP.NET1.1与ASP.NET2.0在Forms 身份验证上的实现方法,以及ASP.NET2.0较上一版本有哪些改进或...充分利用Forms身份验证是最好的方式. 身份验证 从实现机制来说ASP.NET1.1与ASP.NET2.0的安全模型是一致的.首先
通过分析这个源码,初学者可以了解ASP.NET中如何处理用户登录验证,包括使用Forms Authentication、数据库交互以及页面间的导航控制。同时,这也展示了ASP.NET如何结合C#后端代码和前端HTML/CSS/JavaScript来构建...
在ASP.NET中,Forms身份验证是最常用的验证方式,尤其适用于那些不希望依赖于IIS的集成Windows身份验证的场景。 Forms身份验证的工作流程如下: 1. 用户尝试访问需要身份验证的ASP.NET应用程序。 2. 如果用户尚未...
在ASP.NET中,Forms身份验证允许用户通过输入用户名和密码进行登录,然后系统会创建一个身份验证票(Ticket),该票存储在HTTP cookie中或隐藏的表单字段内,以在后续请求中跟踪用户身份。下面我们将详细探讨此示例...