博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ASP.NET 2.0角色及成员管理
阅读量:7223 次
发布时间:2019-06-29

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

 成员管理

一、 Membership 类   :   创建和删除用户, 检索用户信  ,生成随机密码 , 登录验证 
          创建新用户:

ExpandedBlockStart.gif
try
  
{
InBlock.gif         Membership.CreateUser (
"name""password""mail");
ExpandedBlockEnd.gif       }
None.gif  
catch
 (MembershipCreateUserException e) 
ExpandedBlockStart.gif       
{
InBlock.gif       
// 失败
InBlock.gif
       switch (e.StatusCode)
ExpandedSubBlockStart.gif          
{
InBlock.gif       
case MembershipCreateStatus.DuplicateUsername:
InBlock.gif       dot.gif
InBlock.gif       
case MembershipCreateStatus.DuplicateEmail:
InBlock.gif       dot.gif
InBlock.gif       
case MembershipCreateStatus.InvalidPassword:
InBlock.gif       dot.gif
InBlock.gif       
default:
InBlock.gif       dot.gif
ExpandedSubBlockEnd.gif          }
ExpandedBlockEnd.gif       }
      
登录验证:
None.gif
 
if
 (Membership.ValidateUser (UserName.Text, Password.Text))
None.gif     FormsAuthentication.RedirectFromLoginPage (UserName.Text,
None.gif       RememberMe.Checked);
        
方法
:CreateUser(创建用户)  DeleteUser(删除用户)  GeneratePassword(生产随即密码)  GetAllUsers(得到用户)  GetUser(查看某个用户) UpdateUser(修改用户)  ValidateUser(验证是否成功)

二、 MembershipUser类:

     描述在成员数据存储中单一的注册用户信息

     包含了众多的属性来获取和设置用户信息

     包含方法来检索、改变和重设密码

     通过诸如GetUser 和CreateUser的属性返回值

     属性:Comment  CreationDate  Email  LastLoginDate  LastPasswordChangedDate  UserId  UserName

     方法:  ChangePassword  ChangePassword-QuestionAndAnswer   GetPassword   ResetPassword

     
挂起登录权限:
ExpandedBlockStart.gif
 
if
 (Membership.ValidateUser (UserName.Text, Password.Text)) 
{
InBlock.gif    MembershipUser user 
= Membership.GetUser (UserName.Text);
InBlock.gif    user.Comment 
= "0"//记录登录次数
InBlock.gif
    RedirectFromLoginPage (UserName.Text, RememberMe.Checked);
ExpandedBlockEnd.gif    }
ExpandedBlockStart.gif    
else
 
{
InBlock.gif    MembershipUser user 
= Membership.GetUser (UserName.Text);
ExpandedSubBlockStart.gif    
if (user != null{
InBlock.gif        
string count = Convert.ToInt32 (user.Comment) + 1;
InBlock.gif         user.Comment 
= count.ToString ();
ExpandedSubBlockEnd.gif    }
ExpandedBlockEnd.gif}
三  使用 SQL Server提供程序

None.gif
 
<
configuration
>
None.gif  
<
system
.web
>
None.gif    
<
membership 
defaultProvider
="AspNetSqlProvider"
 
/>
None.gif  
</
system.web
>
None.gif
</
configuration
>
   更改提供程序配置:

None.gif
  
<
membership
>
None.gif  
<
providers
>
None.gif    
<
remove 
name
="AspNetSqlProvider"
 
/>
None.gif    
<
add 
name
="AspNetSqlProvider"
None.gif      type
="System.Web.Security.SqlMembershipProvider, System.Web, dot.gif"
None.gif      connectionStringName
="RemoteSqlServer"
None.gif      enablePasswordRetrieval
="false"
None.gif      enablePasswordReset
="true"
None.gif      requiresQuestionAndAnswer
="false"
None.gif      applicationName
="/"
None.gif      requiresUniqueEmail
="false"
None.gif      passwordFormat
="Hashed"
None.gif      description
="Stores and retrieves membership data dot.gif"
None.gif    
/>
None.gif  
</
providers
>
None.gif
</
membership
>
配置提供程序

成员提供程序支持许多配置选项,密码如何被存储 (明文, 散列, 加密)?密码是否允许被恢复?用户是否必须有一个唯一的e-mail地址?通过提供程序类属性来表现,在配置文件中进行初始化

四、角色管理

     方法:AddUserToRole  CreateRole  DeleteRole   GetRolesForUser(查看用户角色)   GetUsersInRole   IsUserInRole  RemoveUserFromRole

   
创建新角色
ExpandedBlockStart.gif
if
 (
!
Roles.RoleExists (
"
Developers
"
)) 
{
InBlock.gif    Roles.CreateRole (
"Developers");
ExpandedBlockEnd.gif}
   
增加用户到一个角色
None.gif
string
 name 
=
 Membership.GetUser ().Username;
None.gifRoles.AddUserToRole (name, 
"
Developers
"
);
    
配置Web.config启用角色
None.gif
<
configuration
>
None.gif  
<
system
.web
>
None.gif    
<
roleManager 
enabled
="true"
 
/>
None.gif  
</
system.web
>
None.gif
</
configuration
>
   
启用角色高速缓存
None.gif
<
configuration
>
None.gif  
<
system
.web
>
None.gif    
<
roleManager 
enabled
="true"
 cacheRolesInCookie
="true"
 
/>
None.gif    
<!--
 Other roleManager attributes (and their defaults) include:
None.gif      cookieName=".ASPXROLES"         // Cookie name
None.gif      cookieTimeout="30"              // Cookie lifetime
None.gif      cookiePath="/"                  // Cookie path
None.gif      cookieRequireSSL="false"        // Restrict cookie to SSL?
None.gif      cookieSlidingExpiration="true"  // Renew expiring cookies?
None.gif      createPersistentCookie="false"  // Issue persistent cookie?
None.gif      cookieProtection="All" />       // Cookie protection level
None.gif    
-->
None.gif  
</
system.web
>
None.gif
</
configuration
>
   使用SQL Server提供程序
None.gif
<
configuration
>
None.gif  
<
system
.web
>
None.gif    
<
roleManager 
enabled
="true"
 defaultProvider
="AspNetSqlRoleProvider"
 
/>
None.gif  
</
system.web
>
None.gif
</
configuration
>
None.gif
错误提示:
None.gif密码最短长度为 7,其中必须包含以下非字母数字字符: 1
None.gif
None.gif解决方案:
None.gif收到以上的消息主要是在创建用户的时候产生的,对于用Asp.net 网站管理工具的时候创建用户也会产生。
None.gif主要是密码输入不符合要求,要改变上面的规定时,主要有两种方法:
None.gif1.所有的站点都改变。
None.gif     找到machine.config文件
None.gif
None.gif
<
membership
>
None.gif            
<
providers
>
None.gif                
<
add 
name
="AspNetSqlMembershipProvider"
None.gif                    type
="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
None.gif                    connectionStringName
="LocalSqlServer"
None.gif                    enablePasswordRetrieval
="false"
None.gif                    enablePasswordReset
="true"
None.gif                    requiresQuestionAndAnswer
="true"
None.gif                    applicationName
="/"
None.gif                    requiresUniqueEmail
="false"
None.gif                    passwordFormat
="Hashed"
None.gif                    maxInvalidPasswordAttempts
="5"
None.gif                    minRequiredPasswordLength
="7"
None.gif                    minRequiredNonalphanumericCharacters
="1"
None.gif                    passwordAttemptWindow
="10"
None.gif                    passwordStrengthRegularExpression
=""
 
/>
None.gif            
</
providers
>
None.gif        
</
membership
>
None.gif里面有两个属性,一个是  minRequiredPasswordLength,意思是最长密码,默认为7另一个是minRequiredNonalphanumericCharacters,默认为1,意思是至少有一个非字母字符,只要把它改成0就可以了。
None.gif
None.gif2.假如只是对某一个站点,只要修改web.config的值就ok了
None.gif修改如上,把上面的代码插入在
<
system
.web
>
下面就ok了。
None.gif
None.gif如要改成密码规则是"至少6个字符,而不用特殊字符的",如下:
None.gif(注:一定要加上 
<
remove 
name
="AspNetSqlMembershipProvider"
 
/>
,否则会提示"项“AspNetSqlMembershipProvider”已添加"的出错信息)
None.gif
None.gif            
<
membership
>
None.gif            
<
providers
>
None.gif                    
<
remove 
name
="AspNetSqlMembershipProvider"
 
/>
None.gif                
<
add 
name
="AspNetSqlMembershipProvider"
None.gif                    type
="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
None.gif                    connectionStringName
="LocalSqlServer"
None.gif                    enablePasswordRetrieval
="false"
None.gif                    enablePasswordReset
="true"
None.gif                    requiresQuestionAndAnswer
="true"
None.gif                    applicationName
="/"
None.gif                    requiresUniqueEmail
="false"
None.gif                    passwordFormat
="Hashed"
None.gif                    maxInvalidPasswordAttempts
="5"
None.gif                    minRequiredPasswordLength
="6"
None.gif                    minRequiredNonalphanumericCharacters
="0"
None.gif                    passwordAttemptWindow
="10"
None.gif                    passwordStrengthRegularExpression
=""
 
/>
None.gif            
</
providers
>
None.gif        
</
membership
>
None.gif
None.gif
本文转自高海东博客园博客,原文链接:http://www.cnblogs.com/ghd258/archive/2005/10/09/250802.html,如需转载请自行联系原作者
你可能感兴趣的文章
javascript - 严格模式
查看>>
Python 爬虫利器 Selenium
查看>>
Typescript 基础(一)之类型
查看>>
【JavaScript】核心语法之对象
查看>>
使用Docker快速建立一个Kafka实例
查看>>
使用 Jenkins 自动部署 Docker 服务(一、Jenkins 搭建篇)
查看>>
读《算法图解》— 对算法的一些基本理解
查看>>
智能数据引擎Dataphin重磅发布,提供一站式的技术管理能力
查看>>
Oracle APEX 系列文章4:在阿里云上打造属于你自己的APEX完整开发环境 (安装XE, ORDS, APEX)...
查看>>
Hadoop(二)Hadoop的HelloWorld(单机模式下的安装和使用)
查看>>
前端学习记录(HTML篇)
查看>>
swoole学习手记(二)创建服务器(上)
查看>>
刘奇:数据库市场呈现多样化趋势,20% 传统数据库在未来两年会被替代
查看>>
springCloud Finchley 微服务架构从入门到精通【六】Bus RabbitMQ配置刷新
查看>>
基于vue模块化开发后台系统——准备工作
查看>>
highlight.js 在 Vue 中使用的一点儿经验
查看>>
C#虚拟仪器开发之写在前面的话
查看>>
koa-mysql(一)
查看>>
生物信息中的Markov链
查看>>
微信授权后获取用户头像保存到服务器
查看>>