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身份认证 阅读目录 • 开始 • ASP.NET身份认证基础 • ASP.NET身份认证过程 • 如何实现登录与注销 • 保护受限制的页面 • 登录页不能正常显示的问题 • 认识Forms身份认证 • 理解Forms身份认证...
案例中实现了Forms身份验证,还实现了net内部的角色,值得大家学习参考. Forms验证流程: 1.为用户创建一个身份验证的票据 2.对身份验证的票据进行加密 3.创建一个cookie,把加密的票据保存在cookie中 4.向HTTP...
关于ASP.NET Forms验证的一些总结,经验不是很足,希望会给大家一些帮助,如有不好的地方 还请多多包含
最近开始一个小 asp.net 项目,整个项目需要登录才能操作。以前大家都采用 asp 的方式 session + cookie 来实现身份验证,我一直对 asp.net 自带的 forms 验证早就耳闻,苦于没实践,今天刚好逮到机会实际应用一下。
主要介绍了浅谈asp.net Forms身份验证详解 ,这种方法可以轻松的保持用户的登录状态(如果用户想这样),便捷的用户授权配置,增强的安全性,有兴趣的可以了解一下。
汇总asp.net基于Form身份验证的相关资料,覆盖面比较全 内有2个文档说明还有几个HTML代码例子来说明。
本文分别以ASP.NET1.1与ASP.NET2.0在Forms 身份验证上的实现方法,以及ASP.NET2.0较上一版本有哪些改进或...充分利用Forms身份验证是最好的方式. 身份验证 从实现机制来说ASP.NET1.1与ASP.NET2.0的安全模型是一致的.首先
主要说了forms 身份验证和基于角色的授权
转自:http://www.yongfa365.com/item/ASP.net-Forms-Demo.html 如果您研究过这个问题,...最后,贴上国人的地址,其实文章写的不错,只是这个事件没写对,其它的都不错,地址是:Asp.net中基于Forms验证的角色验证授权
Forms身份验证用来判断是否合法用户,当用户合法后,再通过用户的角色决定能访问的页面。
Forms鉴别提供的是一种验证用户的方法,而ASP.NET Membership的作用是表示用户的信息。 ASP.NET Membership使用的是提供器模式。ASP.NET Framework内包含了两个Membership提供器: q SqlMembershipProvider——...
是个基于角色的验证,介绍了forms的用法。是个很不错的例子。如果大家对forms还不知道如何运用,大家下载准没错!
在日常的开发中大家都会遇到不同的角色访问不同的文件夹下的网页的情况,这里采用的是Forms身份验证来解决这个问题,数据库有一张角色表:角色id,角色name 还有一张user表 id name password 和角色id 本系统采用VS...
Asp.net中基于Forms验证的角色验证授权,创建一个有登录页的 Web 应用程序.此过程创建一个新的 ASP.NET Web 应用程序。此应用程序将包含两个页;一个是只允许经过身份验证的用户访问的默认页,另一个是用于收集用户...
Forms身份验证,票证存cookie,vs2005
这是一个基于ASP.NET的FORMS身份验证的学习代码
asp.net程序中,用户可以根据角色访问对应页面以及功能。本文将对此进行介绍,具有很好的参考价值,下面跟着小编一起来看下吧