背景

前几天为公司的登陆写密码校验,因为是老系统的东西了,数据已经存在了,所以我要知道密码的校验规则是啥,然后业务经理告诉我了是用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. Gearman + Nodejs + MySQL UDF异步实现 MySQL 到 Redis 的数据同步

    [TOC] 1, 环境 CentOS, MySQL, Redis, Nodejs 2, Redis简介 Redis是一个开源的K-V内存数据库,它的key可以是string/set/hash/list ...

  2. 信号之alarm和pause函数

    使用alarm函数可以设置一个计时器,在将来某个指定的时间,该计时器会超时.当计时器超时时,产生SIGALRM信号.如果不忽略或不捕捉此信号,则其默认动作是终止调用该alarm函数的进程. #incl ...

  3. C#_mvc_ajax_return data

    假设cshtml文件中是这样的: <script type="text/javascript"> $(document).ready(function(){ $(&qu ...

  4. swfupload详细参数

    SWFUpload的初始化与配置 首先,在页面中引用SWFUpload.js ,如<script type=”text/javascript” src=”http://www.swfupload ...

  5. memcached client --ref

    Clients Client API's / libraries Updated Jul 14, 2012 by dorma...@rydia.net ref:https://code.google. ...

  6. Editing and Deleting Data

    Editing and Deleting Data In the previous chapter we've come to learn how we can use the zend-form a ...

  7. PS基础

    1.仿制图章工具:[小  ]大   建立一个新的图层,可以进行图片某个部分的复制,完全复制之后,还可以调整大小(ctrl+t), 颜色(ctrl+u打开色相饱和度的菜单)等. 2.修复画笔工具:与仿制 ...

  8. 2014年6月5日 深圳 IBM 安全解决方案会议通知

    2014年6月5日 深圳 IBM 安全解决方案会议通知 http://gdtesting.com/news.php?id=191 时间: 2014年6月5日 地点: 深圳大中华喜来登 议程: IBM安 ...

  9. Java读取一个文件并打印到控制台上

    package test9; import java.io.BufferedReader; import java.io.File; import java.io.FileNotFoundExcept ...

  10. c#中字符串显示上标和下标解决办法

    由于工作的需求,需要在word中插入带入带有上标和下标的字符串,比如这样的一个字符串:SO₄²⁻(mg/L).在网上搜了好久,终是摸索出点思路. 解决办法:使用转义字符加Unicode的HexEnti ...