欢迎来到天天文库
浏览记录
ID:15791493
大小:72.86 KB
页数:9页
时间:2018-08-05
《asp.netmvc:窗体身份验证及角色权限管理示例》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、ASP.NETMVC:窗体身份验证及角色权限管理示例前言 本来使用FormsAuthentication进行用户验证的方式是最常见的,但系统地阐明其方法的文章并不多见,网上更多的文章都是介绍其中某一部分的使用方法或实现原理,而更多的朋友则发文询问如何从头到尾完整第实现用户的注册、登录。因此,AndersLiu在这一系列文章中计划通过一个实际的例子,介绍如何基于FormsAuthentication实现:l用户注册(包括密码的加密存储)l用户登录(包括密码的验证、设置安全Cookie)l用户实体替换(使用自己的类型作为HttpContext.User的类型
2、) 有关FormsAuthentication的原理等内容不属于本文的讨论范畴,大家可以通过在Google等搜索引擎中输入“FormsAuthentication”、“Forms身份验证”、“窗体身份验证”等关键词来查看更多资源。本文仅从实用的角度介绍如何使用这一技术。不使用Membership 本文介绍的实现方式不依赖ASP.NET2.0提供的Membership功能。这主要是因为,如果使用Membership,就必须用aspnet_regsql.exe实用工具配置数据库,否则就得自己写自定义的MembershipProvider。 如果用aspn
3、et_regsql.exe配置数据库,就会导致数据库中出现很多我们实际并不需要的表或字段。此外更重要的是,默认的SqlMembershipProvider给很多数据表添加了ApplicationID列,其初衷可能是希望可以将多个应用程序的用户全部放在一个库里,但又能彼此隔离。但实际情况是,每个应用程序都在其自身的数据库中保存用户数据。因此,引入这个ApplicationID无端地在每次查找用户时增加了额外的条件。 另一方面,如果考虑自己实现一个MembershipProvider,因为工作量巨大,有点得不偿失。 但是,如果不使用Membership,也
4、就无法享受ASP.NET2.0中新增的Login等控件的便利了。与FormsAuthentication相关的配置 在web.config文件中,/配置节用于对验证进行配置。为节点提供mode="Forms"属性可以启用FormsAuthentication。一个典型的配置节如下所示:5、tUrl="default.aspx"protection="All"timeout="30"path="/"requireSSL="false"slidingExpiration="false"enableCrossAppRedirects="false"cookieless="UseDeviceProfile"domain=""/> 以上代码使用的均是默认设置,换言之,如果你的哪项配置属性与上述代码一致,则可以省略该属性例如。下面依次介绍一下各种属性:lname——Co
5、tUrl="default.aspx"protection="All"timeout="30"path="/"requireSSL="false"slidingExpiration="false"enableCrossAppRedirects="false"cookieless="UseDeviceProfile"domain=""/>
6、okie的名字。FormsAuthentication可能会在验证后将用户凭证放在Cookie中,name属性决定了该Cookie的名字。通过FormsAuthentication.FormsCookieName属性可以得到该配置值(稍后介绍FromsAuthentication类)。lloginUrl——登录页的URL。通过FormsAuthentication.LoginUrl属性可以得到该配置值。当调用FormsAuthentication.RedirectToLoginPage()方法时,客户端请求将被重定向到该属性所指定的页面。loginUrl的
7、默认值为“login.aspx”,这表明即便不提供该属性值,ASP.NET也会尝试到站点根目录下寻找名为login.aspx的页面。ldefaultUrl——默认页的URL。通过FormsAuthentication.DefaultUrl属性得到该配置值。lprotection——Cookie的保护模式,可取值包括All(同时进行加密和数据验证)、Encryption(仅加密)、Validation(仅进行数据验证)和None。为了安全,该属性通常从不设置为None。ltimeout——Cookie的过期时间。lpath——Cookie的路径。可以通过Fo
8、rmsAuthentication.FormsCookiePath
此文档下载收益归作者所有