在项目中利用SQL Server来创建基于角色的身份验证模式

在做项目的时候,我们通常要求有不同角色的身份登录系统,在.net中系统自身带了一套身份验证模式。

首先我们利用 .net自带的命令提示符,在SQL Server中创建一个叫myHomerMemberShip的数据库。

在命令提示符中,输入: aspnet_regsql.exe 然后根据提示,进行一步一步的创建。

创建好的数据库中应该包含如下的数据表:


这样我们就可以利用.net自带的那套身份验证模式要创建程序了。

接着,我们在我们的项目中
点击“myHomer”这个项目,然后在右上角点“asp.net配置”

在这个里面我们会进入到“asp.net网站管理工具”中

在这里我们要进行一些设置主要是关于安全方面的设置,我们可以在这里创建两个角色和两个用户


这样做的目的是为了防止过会在配置"web.config"这个文件的时候不容易出错,我曾试着直接配置web.config,但是后来转到这里配置的时候,报出部分的错误,所以为了方便起见,我们可以直接在这里配置掉部分的设置。



在这里配置好以后,我们就要配置web.config这个文件。

在web.config 文件中配置
这个是数据的连接,应该不用多介绍
    <!--数据库连接字符串-->
    
<connectionStrings>
        
<add name="MyHomerMemberShipConnectStr" connectionString="Data Source=lele;Initial Catalog=MyHomerMemberShip;Persist Security Info=True;User ID=sa;Password=sa" providerName="System.Data.SqlClient"/>
    
</connectionStrings>
    
<!--数据库连接字符串-->


这里我们假设系统中存在着cntvs_admin和bank这两个文件夹,而这两个文件夹只允许角色为“后台用户”的进入,其它角色的我们不允许进入。
 <location path="cntvs_admin">
        
<system.web>
            
<authorization>
                
<deny users="?"/>
                
<allow roles="后台用户"/>
            
</authorization>
        
</system.web>
    
</location>
    
<location path="bank">
        
<system.web>
            
<authorization>
                
<deny users="?"/>
                
<deny roles="后台用户"/>                
            
</authorization>
        
</system.web>
    
</location>

当然,为 了使这个角色的配置起作用,我们还要配置下面的两个节点
<membership defaultProvider="myHomerWebSiteMemberShipProvider">
            
<providers>
                
<add name="myHomerWebSiteMemberShipProvider" type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" connectionStringName="MyHomerMemberShipConnectStr" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="true" applicationName="MyHomer_WEBSITE" requiresUniqueEmail="false" passwordFormat="Hashed" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="4" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" passwordStrengthRegularExpression=""/>
            
</providers>
        
</membership>
        
        
        
<roleManager enabled="true" defaultProvider="myHomerWebSiteSqlRoleProvider">
            
<providers>
                
<add name="myHomerWebSiteSqlRoleProvider" connectionStringName="MyHomerMemberShipConnectStr" applicationName="MyHomer_WEBSITE" type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
            
</providers>
        
</roleManager>

大概的配置情况就是这样了,关于web.config中的详细配置情况可以看http://www.cnblogs.com/Caceolod/articles/793203.html这里有更多详细的说明
posted @ 2008-05-08 17:09  海底的鱼  阅读(262)  评论(0)    收藏  举报