背景

前几天为公司的登陆写密码校验,因为是老系统的东西了,数据已经存在了,所以我要知道密码的校验规则是啥,然后业务经理告诉我了是用Membership去做的加密,让我自己去看。之后我又去问了技术经理,这一块当时做加密是他做的,他告诉了我老项目的位置,让我去获取了看看,然后说了需要配置那些东西。至于membership这个东西,网上一搜也是一大片,都很详细,我重点也不是说这个,因为题目也明确说了是Initialise这个方法,下面是我自己做的简单例子说明。

正文

首先我创建了自己的Provider类,建立自己的类要去继承 MembershipProvider 或者是 SqlMembershipProvider,SqlMembershipProvider也是继承了 MembershipProvider 。继承后,会提示需要引用某个dll,那么需要的是就是  System.Configruation and System.Web.ApplicationServices 的引用。我们需要做的就是重写 Initialize 方法,当然还有很多校验获取用户,创建用户根据业务我们都是需要去做重写的。

        public class MyMembership : SqlMembershipProvider
       {
        public override void Initialize(string name, NameValueCollection config)
       {
        var en = config[""];
        base.Initialize(name, config);
        }
        }

接下来添加我们的配置文件

    <system.web>
    <membership defaultProvider ="MyMembership">
    <providers>
    <add name ="MyMembership" type="MembershipTest.MyMembership,MembershipTest " connectionStringName="yourConnectionStr"
    enablePasswordRetrieval="false"
    enablePasswordReset =" true"
    requiresQuestionAndAnswer="false"
    requiresUniqueEmail =" false"
    maxInvalidPasswordAttempts="5"
    minRequiredPasswordLength =" 6" m
    inRequiredNonalphanumericCharacters =" 0"
    passwordAttemptWindow= "10 " applicationName="/" />
    </providers>
    </membership>
    </system.web>
 
 

配置节点中的type一定是我们自己的provider类的全名,还有就是defaultProvider节点名字要和providers中的 name 一致,基本网上一搜全都是,直接拿过来改改就可以。接下来就是我们调用了,怎么调用当时我就在这个地方弄了半天,因为调试 Initialize方法的时候,断点怎么都不进来,我不停地在网上搜着,但是没有一个告诉我答案的,我也看到了一些像我一样的同胞在问这个问题。           

      bool isResult = Membership.ValidateUser("a", "b");
      Console.WriteLine(isResult);
      Console.ReadKey();

大家看到了,我是用Membership这个静态类去调用的方法,其实想想因为我们配置文件就是配置的这个类节点,通过这个类与我们自己的Provider形成了一个映射关系,那么我们在调用Membership中的方法的时候,第一步就是去调用了 Initialize ,这也是我们要做初始化的地方。那么我们再调用Membership中的方法时候其实就是走的我们的Provider中的方法,当然这些方法在Mebership中也是同名的,在我们继承的Provider基类中都有,而我们是在我们自己的provider中重写了一些,从而为了实现我们自己的业务代码逻辑。只是做一个小小的发现,还望大牛们多多指点。。。。。。

If you decide, stick to it.

MembershipProvider的Initialize的更多相关文章

  1. 自定义一个叫 ReadOnlyXmlMembershipProvider 的 MembershipProvider,用 XML 作为用户储藏室

    1. 配置 web.config <membership defaultProvider="AspNetReadOnlyXmlMembershipProvider"> ...

  2. load和initialize方法

      一.load 方法什么时候调用: 在main方法还没执行的时候 就会 加载所有类,调用所有类的load方法. load方法是线程安全的,它使用了锁,我们应该避免线程阻塞在load方法. 在项目中使 ...

  3. Flex中的initialize,creationComplete和applicationComp

    转自:http://blog.csdn.net/sjz168/article/details/7244374 1.Application标签中有三个事件initialize,creationCompl ...

  4. log4j:WARN Please initialize the log4j system properly 问题解决

    log4j:WARN No appenders could be found for logger (com.netease.qa.testng.TestngRetry).log4j:WARN Ple ...

  5. OC--init,initialize,initWithCoder:,initWithFrame:各方法的区别和加载顺序

    1.先把OC的类分清楚各有什么方法 普通类的方法 init initialize: 控制器类的方法 init initialize: initWithCoder: UI控件类的方法 init init ...

  6. OC load与initialize

    OC load与initialize load 当类被引用进程序的时候会执行这个函数 一个类的load方法不用写明[super load],父类就会收到调用,并且在子类之前. Category的loa ...

  7. initialize和init以及load方法的区别与使用以及什么时候调用

    initialize不是init initialize在这个类第一次被调用的时候比如[[class alloc]init]会调用一次initialize方法,不管创建多少次这个类,都只会调用一次这个方 ...

  8. java.lang.Class.forName(String name, boolean initialize, ClassLoader loader)方法

    描述 Java.lang.Class.forName(String name, boolean initialize, ClassLoader loader) 方法返回与给定字符串名的类或接口的Cla ...

  9. Cannot initialize Cluster. Please check your configuration for mapreduce.framework.name and the co

    log4j:WARN No appenders could be found for logger (org.apache.hadoop.metrics2.lib.MutableMetricsFact ...

随机推荐

  1. 主流数据库字段类型转.Net类型的方法

    最近在阅读一些开源的代码,发现其中有些方法总结的很全面,至少在我做同样的事情时候,需要抓破脑袋想活着google,现在看到了这个关于主流数据库字段类型转.Net类型的方法,故收藏之,也顺便分享给那些能 ...

  2. 让DataGridView显示行号

          http://www.cnblogs.com/JuneZhang/archive/2011/11/21/2257630.html 为了表示行号,我们可以在DataGridView的RowP ...

  3. OpenCV 读取.xml文件

    OpenCV 只提供了读取和存储.xml和.yml 文件格式的函数. 读取.xml文件的C++例程如下: cv::FileStorage fs; //OpenCV 读XML文件流 cv::Mat De ...

  4. 手把手教你Android来去电通话自动录音的方法

    我们在使用Android手机打电话时,有时可能会需要对来去电通话自动录音,本文就详细讲解实现Android来去电通话自动录音的方法,大家按照文中的方法编写程序就可以完成此功能. 来去电自动录音的关键在 ...

  5. UIAlertController 简单修改title以及按钮的字体颜色

    苦逼的开发者,最终败给了一个任性的UI,系统原生UIAlertController的按纽颜色必须改.于是,开始了不归路.之前的版本是自己用view写的一个仿系统UIActionSheet,动画感觉都挺 ...

  6. excel vba 打印设置(转)

    FROM: http://hi.baidu.com/kdlipm/blog/item/0897dd16ffc03e59f3de32ab.html PageSetup 函式就會記錄時, 設定的記錄三個部 ...

  7. Java + MongoDB Hello World Example--转载

    原文地址:http://www.mkyong.com/mongodb/java-mongodb-hello-world-example/ A simple Java + MongoDB hello w ...

  8. IIS 之 查看并发连接数

    如果要查看IIS连接数,最简单方便的方法是通过“网站统计”来查看,“网站统计”的当前在线人数可以认为是当前IIS连接数.然而,“网站统计”的当前在线人数统计时间较长,一般为10分钟或15分钟,再加上统 ...

  9. Java 之 调用.Net的 WebService 整理

    最近做一个 java 调用 .net 服务的项目,其中 .net做了一个WebService,需要java来调用. 最开始.net的Service代码如下: using System; using S ...

  10. JAVA_JDBC

    测试类: 1 import java.util.ArrayList; import java.util.List; /** * 创建数据库: * 1.加载驱动 * Class.forName(&quo ...