MembershipProvider的Initialize

背景

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

时间: 2024-11-09 05:47:39

MembershipProvider的Initialize的相关文章

ASP.NET 自定义 MembershipProvider和RoleProvider

ASP.NET中默认的MembershipProvider和RoleProvider是Sql Server的,但是默认的提供类有时候不能满足要求,如数据库不是Sql Server,或者想使用自己的数据库表结构等原因不想使用自带的提供类,可以自定义提供类 在web.config中定义forms验证的路径和自定义提供类的名称 <?xml version="1.0"?> <configuration> <system.web> <compilatio

关于延迟加载(lazy)和强制加载(Hibernate.initialize(Object proxy) )

PO 即Persistence Object VO 即Value Object PO 和VO 是Hibernate 中两个比较关键的概念. 首先,何谓VO,很简单,VO 就是一个简单的值对象. 如: TUser user = new TUser(); user.setName("Emma"); 这里的user 就是一个VO.VO 只是简单携带了对象的一些属性信息. 何谓PO? 即纳入Hibernate 管理框架中的VO.看下面两个例子: TUser user = new TUser()

Mapper not initialized. Call Initialize with appropriate configuration.

System.InvalidOperationException:“Mapper not initialized. Call Initialize with appropriate configuration. If you are trying to use mapper instances through a container or otherwise, make sure you do not have any calls to the static Mapper.Map methods

js中 理解 this.initialize.apply ( this, arguments ) 定义对象的方式

var Class = { create:function() { return function() { this.initialize.apply(this, arguments); }; } } var Tool = Class.create(); Tool.prototype = { initialize: function($container){ this.val = 32; }, getVal:function(){ return this.val; }, setVal:funct

Android开发之parseSdkContent failed Could not initialize class android.graphics.Typeface

在进行android开发过程中,忽然发现经常弹出来parseSdkContent failed 这个错误,然后google了下解决办法 方法1: 删除.android文件 重启eclipse. 该方法对我来说还是管用的,确实没有弹出这些东西了.但是在启用SDK Manger或者虚拟机的时候,弹出了parseSdkContent failed Could not initialize class android.graphics.Typeface这个问题,解决google吧. 然后在stackov

struts2 log4j:WARN Please initialize the log4j system properly. 解决方法

在tomcat启动的时候,出现这个警告: log4j:WARN No appenders could be found for logger (org.apache.commons.digester.Digester.sax).log4j:WARN Please initialize the log4j system properly. 解决办法: log4j.properties文件需要放到web-inf/class目录下面,在eclipse里面放到src目录下面,会自动拷贝到class目录下

failed to lazily initialize a collection of role

在springmvc hibernate的映射文件中如图设置多对多关联,为了显示查询的的列表,打印json数据,我们刚开始是这样设置如下的设置文件 然后进行查询操作 结果报 failed to lazily initialize a collection of role错误 假如这样设置 结果就是这样的 正常打印json数据 为什么会这样? 首先,lazy是延时的意思,如果lazy=true,那么就是说数据库中关联子表的信息在hibernate容器启动的时候不会加载,而是在你真正的访问到字表非标

sqoop job local 和 Cannot initialize Cluster 问题

hadoop版本:Hadoop 2.3.0-cdh5.0.0 sqoop版本:Sqoop 1.4.4-cdh5.0.0 配置好sqooop-env.xml: #Set path to where bin/hadoop is available export HADOOP_COMMON_HOME=/my/hadoop #Set path to where hadoop-*-core.jar is available export HADOOP_MAPRED_HOME=/my/hadoop/shar

weblogic 12c下jxls导出excel报错Could not initialize class org.apache.poi.xssf.usermodel.XSSFVMLDrawing

周一,开发反馈weblogic 12c下jxls导出excel报错,公司环境和UAT环境均报错,看日志如下: 2016-06-08 09:16:55,825 ERROR org.jxls.util.TransformerFactory.createTransformer(TransformerFactory.java:40)[org.jxls.util.TransformerFactory] - Method createTransformer of org.jxls.transform.poi