membership配置

从.net 2.0开始  asp.net 就进入了一个倡导少写代码多配置的时期

“机器先进阿 我们只要把猪赶进去 对面就会从传送带里传出香肠来!”

下面就是启动机器并且赶猪的工作。

在赶猪以前,我们先来了解一下,Web.Security 的工作大概方式

membership配置篇 - ㊣涛 -   ㊣三水寿

当一个页面打开  系统会首先读取System.web  按照其中的配置段  在进程中建立相应的各种Provider的实例 。

之后的所有登陆控件在交互的时候会自动调用相应Provider实例的方法和属性。所以大部分工作是在配置中

进行的

具体配置如下

1 配置数据库

运行    /WINDOWS/Microsoft.NET/Framework/v2.0.50727  下的Aspnet_regsql.exe

membership配置篇 - ㊣涛 -   ㊣三水寿

随后 向导便在SQL Server中建立了对应的表。

这些表就是.Net 2.0 默认Provider对应的表,如果你在建立一个新项目 就没必要在自己写烦人的登陆了,

这些表和它们所支持默认Provider的已经涵盖了很多高级功能,包括cookie的支持、跨网站跨进程的登陆、

找回密码、邮箱认证等功能,当然我们也可以扩展它们。

membership配置篇 - ㊣涛 -   ㊣三水寿

相对的  我们还需要在web.config 建立这个数据连接字符串(<configuration >段中)

membership配置篇 - ㊣涛 -   ㊣三水寿    <connectionStrings>

membership配置篇 - ㊣涛 -   ㊣三水寿        <add name="MemberShip_Connection" connectionString="Data Source=.;

Initial Catalog=MemberShip_Demo;Persist Security Info=True;User ID=sa;Password=abcdefg" 

providerName="System.Data.SqlClient"/>

membership配置篇 - ㊣涛 -   ㊣三水寿membership配置篇 - ㊣涛 -   ㊣三水寿    </connectionStrings>

这样数据库的配置就已经完成了,我爱厨房怎么说来着?阴干待用。

2  配置验证类型

一个asp.net缺省的身份验证是windows nt 登陆。如果我们要自己来处理验证信息就要在 <configuration >

下面的<system.web> 段加入节点通知系统。

membership配置篇 - ㊣涛 -   ㊣三水寿        <authentication mode="Forms">

membership配置篇 - ㊣涛 -   ㊣三水寿            <forms loginUrl="~/Membership/authing/Login.aspx" timeout="30000">

membership配置篇 - ㊣涛 -   ㊣三水寿            </forms>

membership配置篇 - ㊣涛 -   ㊣三水寿        </authentication>

mode=forms 表示我不要用默认的windows NT 权限设置、而用我们配置的这种自定义的

面向网页界面的验证方式。

loginUrl  表示如果访问某页需要验证的话 跳转到哪一个(一般是有Login控件的)地址来进行登陆。登陆

完毕,会直接跳回刚才的页面。

3  配置各种Provider

Provider对于Membership的感觉有点像 DataAdapter对于Dataset的感觉,都是可选择的配件,你配置了

不同的Provider 就有不同的用户数据库可以访问

目前Provider 默认提供两种官方Provider:  SQL Provider  & ADSI  Provider  

前者通过SqlServer数据库保存  后者直接连结windows域的adsi服务

例如

membership配置篇 - ㊣涛 -   ㊣三水寿<membership defaultProvider="Main_SqlMemberShipProvider" userIsOnlineTimeWindow="20">

membership配置篇 - ㊣涛 -   ㊣三水寿            <providers>

membership配置篇 - ㊣涛 -   ㊣三水寿                <add connectionStringName="MemberShip_Connection"

                            enablePasswordRetrieval="false" 

                            enablePasswordReset="true" 

                             requiresQuestionAndAnswer="true" 

                             passwordFormat="Hashed"

                            applicationName="DEMO_Membership" 

                            name="Main_SqlMemberShipProvider" 

                           type="System.Web.Security.SqlMembershipProvider"/>

membership配置篇 - ㊣涛 -   ㊣三水寿        

membership配置篇 - ㊣涛 -   ㊣三水寿            </providers>

membership配置篇 - ㊣涛 -   ㊣三水寿        </membership>

 

 

解释providers 下节点的作用:

    1.connectionStringName  -是用于表示应用程序特有的用户。既,相同的用户名可对应于指定了不同

 

    2.enablePasswordReset  -获取一个值,指定当前成员资格提供程序 是否 配置为允许用户重置其密码。

                当密码格式设置为Hashed时此功能尤其有用,因为用户五大检索哈希后的密码值。

 

    3.enablePasswordRetrieval -获取一个值,指示当前成员资格提供程序 是否 配置为允许用户检索其密码。

                  如果成员资格提供程序支持检索则为:true; 否则为 False

    4. HashAlgorithmType -用于哈希密码的算法的表示符,或为空以使用默认哈希算法。

   

     5.MaxlnvalidPasswordAttempts 与PasswordAttemptWindow 属性一起使用以防止不明

                 来源反复尝试来猜测成员资格用户的密码或提示问题答案。

                ·  如果在PasswordAttemptWindow 属性指定的分钟数内,针对莫一成员资格用户所提供的无效

                密码或无效密码问题答案的次数大于或等于MaxlnvalidPasswordAttempts属性的值,则通过将

                IsLockedOut属性设置为true把该用户锁定在网站之外,直到通过调用UnlockUser方法解除对该用户的锁定。

               ·

 

这个例子表示  我要用MemberShip_Connection这个连接字符串连接数据库(我们阴干待用的部分) 

用户不能找回密码但是可以重新设置密码,找回的时候需要密码提示问题,储存在数据库中的密码用

sha1进行加密  等等细节问题。  对于公用的Membership数据库 区别名为  DEMO_Membership  .

Type是重要的选项 这决定你使用哪一个符合接口的具体的类型来担任Provider 项  如果你使用自己的

Provider  可以把DLL作为引用添加在bin目录后  在这里填写详细的命名空间信息  比如“"System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089”

之类的东西  这里不作赘述

这时候 我们已经可以通过控件进行申请和登陆了   你所需要做的只是把控件拖到指定的页面上 然后

test   也可以通过网站菜单下的管理工具进行修改

membership配置篇 - ㊣涛 -   ㊣三水寿

membership配置篇 - ㊣涛 -   ㊣三水寿

有些选项可能进不去 但是用户的删除和修改都可以尝试使用了。  我们只需要进一步配置 更多的功能

就向我们敞开大门了~~~

同样我们配置Roles 和 Profile 的Provider

membership配置篇 - ㊣涛 -   ㊣三水寿        <roleManager enabled="true" cacheRolesInCookie="true" cookieName=".ASPROLES"

 cookieRequireSSL="true" defaultProvider="SqlRoleProvider">

membership配置篇 - ㊣涛 -   ㊣三水寿            <providers>

membership配置篇 - ㊣涛 -   ㊣三水寿                <add connectionStringName="MemberShip_Connection" applicationName=

"DEMO_Membership" name="SqlRoleProvider" type="System.Web.Security.SqlRoleProvider"/>

membership配置篇 - ㊣涛 -   ㊣三水寿            </providers>

membership配置篇 - ㊣涛 -   ㊣三水寿        </roleManager>

membership配置篇 - ㊣涛 -   ㊣三水寿<profile enabled="true" defaultProvider="SqlProfileProvider">

membership配置篇 - ㊣涛 -   ㊣三水寿            <providers>

membership配置篇 - ㊣涛 -   ㊣三水寿                <add name="SqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" 

connectionStringName="MemberShip_Connection" applicationName="DEMO_Membership" 

description="SqlProfileProvider for SampleApplication"/>

membership配置篇 - ㊣涛 -   ㊣三水寿            </providers>

membership配置篇 - ㊣涛 -   ㊣三水寿            <properties>

membership配置篇 - ㊣涛 -   ㊣三水寿            

membership配置篇 - ㊣涛 -   ㊣三水寿        <add name="UserAge" type="System.String" defaultValue ="21"></add>

membership配置篇 - ㊣涛 -   ㊣三水寿        <add name="UserSex" type="System.String" defaultValue ="Male"></add>

membership配置篇 - ㊣涛 -   ㊣三水寿               </properties>

        </profile>

 

 

经过编译以后  你已经可以轻松的在你的页面里面访问和设置你现在登陆的用户的各种信息:

membership配置篇 - ㊣涛 -   ㊣三水寿membership配置篇 - ㊣涛 -   ㊣三水寿   Protected Sub Button1_Click()Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click

membership配置篇 - ㊣涛 -   ㊣三水寿        Dim x As String = String.Empty

membership配置篇 - ㊣涛 -   ㊣三水寿        x = x & Membership.GetUser().UserName & ":"

membership配置篇 - ㊣涛 -   ㊣三水寿        x = x & Roles.GetRolesForUser(Membership.GetUser().UserName).Length & "个角色:"

membership配置篇 - ㊣涛 -   ㊣三水寿        x = x & "年龄" & Profile.UserAge

membership配置篇 - ㊣涛 -   ㊣三水寿        Button1.Text = x

membership配置篇 - ㊣涛 -   ㊣三水寿

membership配置篇 - ㊣涛 -   ㊣三水寿    End Sub

假如你没有登陆  可能会得到一个对象引用错误   但是你作为一个已知用户登陆的话   运行结果大概是

这样

membership配置篇 - ㊣涛 -   ㊣三水寿

而刚才提到的网站管理工具  已经基本可以正常工作了。

配置篇的例子到此完成    至于每一个参数什么意义   MSDN上还是很全的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值