博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
asp.net成员资格与角色管理使用和配置
阅读量:7071 次
发布时间:2019-06-28

本文共 2910 字,大约阅读时间需要 9 分钟。

  • Web用户与权限管理概述
  • 使用ASP.NET网站管理工具
  • 使用登录控件
  • 自定义成员资格与角色管理
 
一、Web用户与权限管理概述
 
  • ASP.NET身份验证方式(在实际的Web项目,多采用Forms身份验证)

身份验证方式

说明

None

不进行身份验证,Web站点向所有人开放

Windows

基于Windows身份验证,使用用户登录Windows的账户作为Web站点的用户。由于用户在访问网站前已经登录了Windows,所以他访问网站时不再需要输入用户名与密码。

Forms

由ASP.NET负责进行身份验证,即网站提供一个登录页面,要求用户输入用户名与密码,验证合法之后才可以访问网站。

Passport

使用微软提供的Passport SDK,通过第三方进行身份验证。

默认情况下,web.config中有以下设置:

    <authenticationmode="Windows"/>

    说明此ASP.NET网站使用Windows身份验证。

 

 

修改web.config如下:

 <authenticationmode="Forms">

      <forms loginUrl="~/login.aspx"   defaultUrl="~/default.aspx" 

        name="UnderStandAuthentication”                   

        protection="All"timeout="60"/>

    </authentication>

先访问登录网页 Login.aspx,成功后自动跳转到网站主页 default.aspx

 

在前面的例子中,用户可以通过直接在浏览器中输入URL来绕开登录过程直接访问网站主页。
如何强制用户必须登录后才能访问网站主页
  • 给网站添加访问规则

<authorization>

      <allow users="SystemManager" />

      <deny users="?" />

 </authorization>

 

上述设置禁止匿名用户访问网站,只允许SystemManager用户访问。
有了上述设置,现在,用户不登录直接访问网站主页,将会被导航到登录页面。

 

 

1.身份验证确认“你是谁?”,而授权则规定“你能干什么!”。可以在web.config中设定身份验证模式和进行授权。
2.使用FormsAuthentication.SetAuthCookie(用户名)方法表明某个用户已通过身份验证。其信息保存于Cookie中。
3.在网页中使用Context.User.Identity获取身份验证信息(如用户名)。
 
  • 进一步理解授权
可以把用户分为特定的种类,每种类型的用户只能做特定的事。
这种用户的分类被称为“角色(Role)”。
角色可以看成是具有特定权限的用户集合。
可以使用“ASP.NET网站配置”工具轻松地给网站添加角色。
 
  • 了解ASP.NET用户权限管理框架
MemberShip类 :提供了一系列的静态方法与属性,完成创建用户、管理密码以及身份验证的功能。
 
MemberShipUser类:代表单个的用户权限信息,该对象公开成员资格用户的相关信息(如电子邮件地址),并为成员资格用户提供功能(如更改或重置其密码的功能)。
 
Roles类:提供了一系列的静态方法与属性,完成角色管理的相关功能,例如,将某个用户加入到特定的角色中。
FormsAuthentication类:用户登录凭据的保存
 
 
二、使用ASP.NET网站管理工具
 

 

 

从VS的“网站”菜单中选择“ASP.NET配置”,即可打开ASP.NET网站管理工具。
 利用网站管理工具,可以给网站添加用户和角色,同时创建访问规则。

 

 

 
 
三、使用登录控件
 
  • Login控件
  • LoginView控件
  • PasswordRecovery控件
  • ChangePassword控件
  • LoginStatus控件
  • LoginName控件
  • CreateUserWizard控件
 
四、自定义成员资格与角色管理
 
  • 将成员资格数据库并入本网站数据库 

 

 

使用Windows\Microsoft.NET\Framework\
v2.0.50727\ aspnet_regsql.exe工具将成员资格数据库移到SQLServer中
 
修改网站配置文件web.config
 
添加一个连接字串

<connectionStrings>

<add name="MySqlConnection" connectionString=“……;" />

</connectionStrings>

设定网站使用特定的成员资格提供程序:

<membership defaultProvider="SqlProvider“ >

<providers>

<clear />

<add name="SqlProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="MySqlConnection" ……" />

</providers>

</membership>

配置角色管理提供程序

<roleManagerenabled="true"  defaultProvider="SqlProvider">

     <providers>

        <add name="SqlProvider"

            connectionStringName="MySqlConnection"

            applicationName="UserMemberShipInSQLServer"

            type=" System.Web.Security.SqlRoleProvider,

                      System.Web,Version=2.0.0.0, Culture=neutral,             PublicKeyToken=b03f5f7f11d50a3a " … />

     </providers>

  </roleManager>

  • 添加扩充的用户信息
所有的成员资格用户信息都有一个标识,
利用此标识,根据实际情况可以在数据库中另外创建一个自定义用户表以保存一些扩充信息,这个表与成员资格的用户表之间使用此用户标识进行关联。

 MembershipUser user = Membership.GetUser("sa");

       if(user!=null)

                 Response.Write(user.ProviderUserKey);

 

  • 数据不放在SQL Server中,因此,不能用aspnet_regsql.exe工具
 
自定义一个成员资格提供程序,派生自抽象类MemberShipProvider,实现其中所有的抽象方法。
自定义一个角色管理提供程序,派生自抽象类RoleProvider,实现其中所有的抽象方法。
修改网站的web.config,使用新开发的提供程序替换掉默认的SqlMemberShipProvider和AspNetSql-RoleProvider即可。

转载于:https://www.cnblogs.com/rongnianwu/archive/2012/10/28/2743415.html

你可能感兴趣的文章
一个用ASP生成html的新方法
查看>>
解决y7000笔记本ubuntu18.04下 休眠挂起后唤醒花屏
查看>>
大数相乘、相加、相减、相除
查看>>
ScrollView反弹效果的实现
查看>>
【洛谷 UVA11417】 GCD(欧拉函数)
查看>>
2018-2019-2 网络对抗技术 20165323 Exp4 恶意代码分析
查看>>
puppet yum仓库
查看>>
openStack工具集
查看>>
日志类
查看>>
跨数据库Copy表数据
查看>>
mysql权限
查看>>
C# to IL 12 Arrays(数组)
查看>>
基于Linux的oracle数据库管理 part2( 数据库 准备,安装,创建 )
查看>>
Layout--iOS
查看>>
BAK文件怎么恢复到数据库中
查看>>
运行及总结
查看>>
怎么才能少奋斗10年
查看>>
QTableWidget与QTableView的区别
查看>>
关于SQL Server 中连接查询Join的几种常见用法
查看>>
Selenium学习之==>Switch与SelectApi接口详解
查看>>