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.
MembershipProvider的Initialize的更多相关文章
- 自定义一个叫 ReadOnlyXmlMembershipProvider 的 MembershipProvider,用 XML 作为用户储藏室
1. 配置 web.config <membership defaultProvider="AspNetReadOnlyXmlMembershipProvider"> ...
- load和initialize方法
一.load 方法什么时候调用: 在main方法还没执行的时候 就会 加载所有类,调用所有类的load方法. load方法是线程安全的,它使用了锁,我们应该避免线程阻塞在load方法. 在项目中使 ...
- Flex中的initialize,creationComplete和applicationComp
转自:http://blog.csdn.net/sjz168/article/details/7244374 1.Application标签中有三个事件initialize,creationCompl ...
- 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 ...
- OC--init,initialize,initWithCoder:,initWithFrame:各方法的区别和加载顺序
1.先把OC的类分清楚各有什么方法 普通类的方法 init initialize: 控制器类的方法 init initialize: initWithCoder: UI控件类的方法 init init ...
- OC load与initialize
OC load与initialize load 当类被引用进程序的时候会执行这个函数 一个类的load方法不用写明[super load],父类就会收到调用,并且在子类之前. Category的loa ...
- initialize和init以及load方法的区别与使用以及什么时候调用
initialize不是init initialize在这个类第一次被调用的时候比如[[class alloc]init]会调用一次initialize方法,不管创建多少次这个类,都只会调用一次这个方 ...
- java.lang.Class.forName(String name, boolean initialize, ClassLoader loader)方法
描述 Java.lang.Class.forName(String name, boolean initialize, ClassLoader loader) 方法返回与给定字符串名的类或接口的Cla ...
- 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 ...
随机推荐
- Sublime Text 3 史上最性感的编辑器
下载 / 安装 windows / MAC OS 官网下载,双击安装,这个都会吧- linux linux下安装,一种办法是从官网下载 tar.bz ,手动安装. 这里介绍用 apt-get 自己主动 ...
- sphinx配置文件继承
# # Minimal Sphinx configuration sample (clean, simple, functional) # source mysql { type = mysql #数 ...
- Advanced Configuration Tricks
Advanced Configuration Tricks Configuration of zend-mvc applications happens in several steps: Initi ...
- MS OFFICE 2010破解版安装
受人所托发布一个MS OFFICE 2010破解版的傻瓜安装教程,刚好新本本也没有安装,安装过程中截了几个图就搞定了. 安装包: http://www.itopdog.cn/soft/office20 ...
- [COCOS2DX]交叉编译实践+速度优化(vs2012修改win32代码+修改makefile+编译安卓项目包+部署安卓项目包到Eclipse+运行apk)
通过前面的部署过程可以知道cocos2dx的开发过程如下: 1.VS2012完成修改 2.因为指定了CPP文件位置,ndk可以通过jni方式完成C++文件的编译,运行以下命令完成proj.androi ...
- 比较js中创建对象的几种方式
1.工厂模式 function createObj(name, sex){ var obj = new Object(); obj.name = name; obj.sex = sex; obj.sa ...
- DROP--删除表
DROP TABLE table_name; 说明: 1.必须有表的权限 2.表不能有外键约束
- 关于Git的merge和rebase命令解析
git rebase是对提交执行变基的操作.即可以实现将指定范围的提交"嫁接"到另外一个提交智商. 其常用的命令格式有: 用法1:git rebase --onto <new ...
- Chrome&FF&Opera&下DIV不设置高度显示背景颜色和边框的办法
今天在排版的时候,外层的div不写高度的话背景颜色和边框没法办法显示,但是在IE下面就可以,这个有三个解决办法. 第一: 直接给最外层的div设置高度(不推荐). 第二: 在内部每个div后添加一个清 ...
- ubuntu:configure error:cannot find ssl libraries
安装SSL库,openssl或者libssl: sudo apt-get install openssl sudo apt-get install libssl configure的时辰加上选项: . ...