使用MemberShip,Profile时碰上的一些问题
2007-03-15 16:12
543 查看
1. [/b]使用[/b]Profile.GetProfile(string username)[/b]时碰上的问题[/b][/b]
我想在一个页面里编辑任意一个MemberShip的User的Profile,这时我使用了页面.Profile.GetProfile(username),由于能登陆到这个页面的用户都是具有权限的用户,所以运行的时候一切正常,为了优化代码,我要把操作Profile的代码移动到后台自己定义的类里,这时候已经不存在页面类的实例,所以我要使用HttpContext.Current.Profile来代替Page.Profile 这时候问题出现了,在HttpContext.Current.Profile里不存在GetProfile(string username)这个方法,仔细看一下 原来这两个Profile是来之不同的类,Page.Profile是ProfileComm的实例,而HttpContext.Current.Profile是Profilebase的实例,最后找到得到GetProfile的方法是这样的:
ProfileCommon pc = (ProfileCommon)ProfileBase.Create(“username”, true);
而这里的username,一定是要一个通过认证的membership的user,这时候在使用pc.GetProfile(“otherusername”) 就可以对其他用户的Profile进行编辑了。
2. [/b]使用[/b]MembershipUser.ChangePassword[/b]碰上的问题[/b][/b]
我自定义了一个添加,修改,删除Membership用户的控件,要使用到修改密码的功能,MembershipUser里有一个ChangePassword的方法,不过需要两个参数,oldpassword和newpassword,由于我需要一个修改密码而不用提供旧密码的功能,所以就要先把用户的老密码给找出来,幸运的发现在MembershipUser下有一个GetPassword的方法,立即调用弹出异常,看了异常的说明继续找问题,发现问题出在 Membership Provider的配置参数上,
<membership defaultProvider="herSqlMembershipProvider">
<providers>
<add name="herSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" requiresQuestionAndAnswer="false" connectionStringName="her" requiresUniqueEmail="false" passwordFormat="Clear" minRequiredPasswordLength="3" enablePasswordRetrieval="true"
minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" passwordStrengthRegularExpression="" applicationName="/ " />
</providers>
</membership>
GetPassword主要涉及到三个属性: passwordFormat, requiresQuestionAndAnswer, enablePasswordRetrieval,首先需要把enablePasswordRetrieval设置为true,可以回收密码,然后是passwordFormat可以设置三个值:Clear, Encrypted, and Hashed,如果设置成了Hashed,那密码是不可逆的,也不能得到密码,而Clear和Encrypted都是可以的,Clear是明文保存,而Encrypted是加密保存,如果设置成了加密保存,还需要设置一些密钥什么的,不然CreateUser时会出错,最后是属性requiresQuestionAndAnswer,它是表示是否需要有密码问题和答案来重新取回密码的机制,如果这个设置为true,那么你在使用GetPassword时,需要把这个用户的问题的答案一起传进去,不然也会产生异常。
3. [/b]匿名访问时设置[/b]Profile[/b]属性出现异常[/b][/b]
这也是需要配置文件里的属性进行配置:
<anonymousIdentification enabled="true" />
<profile defaultProvider="herSqlProfile">
<providers>
<add name="herSqlProfile" type="System.Web.Profile.SqlProfileProvider" connectionStringName="her" />
</providers>
<properties>
<add name="MyTheme" type="String" allowAnonymous="true"/>
</properties>
</profile>
首先是anonymousIdentification 把enbaled设置为true,然后再profile里的属性allowAnonymous="true"
我想在一个页面里编辑任意一个MemberShip的User的Profile,这时我使用了页面.Profile.GetProfile(username),由于能登陆到这个页面的用户都是具有权限的用户,所以运行的时候一切正常,为了优化代码,我要把操作Profile的代码移动到后台自己定义的类里,这时候已经不存在页面类的实例,所以我要使用HttpContext.Current.Profile来代替Page.Profile 这时候问题出现了,在HttpContext.Current.Profile里不存在GetProfile(string username)这个方法,仔细看一下 原来这两个Profile是来之不同的类,Page.Profile是ProfileComm的实例,而HttpContext.Current.Profile是Profilebase的实例,最后找到得到GetProfile的方法是这样的:
ProfileCommon pc = (ProfileCommon)ProfileBase.Create(“username”, true);
而这里的username,一定是要一个通过认证的membership的user,这时候在使用pc.GetProfile(“otherusername”) 就可以对其他用户的Profile进行编辑了。
2. [/b]使用[/b]MembershipUser.ChangePassword[/b]碰上的问题[/b][/b]
我自定义了一个添加,修改,删除Membership用户的控件,要使用到修改密码的功能,MembershipUser里有一个ChangePassword的方法,不过需要两个参数,oldpassword和newpassword,由于我需要一个修改密码而不用提供旧密码的功能,所以就要先把用户的老密码给找出来,幸运的发现在MembershipUser下有一个GetPassword的方法,立即调用弹出异常,看了异常的说明继续找问题,发现问题出在 Membership Provider的配置参数上,
<membership defaultProvider="herSqlMembershipProvider">
<providers>
<add name="herSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" requiresQuestionAndAnswer="false" connectionStringName="her" requiresUniqueEmail="false" passwordFormat="Clear" minRequiredPasswordLength="3" enablePasswordRetrieval="true"
minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" passwordStrengthRegularExpression="" applicationName="/ " />
</providers>
</membership>
GetPassword主要涉及到三个属性: passwordFormat, requiresQuestionAndAnswer, enablePasswordRetrieval,首先需要把enablePasswordRetrieval设置为true,可以回收密码,然后是passwordFormat可以设置三个值:Clear, Encrypted, and Hashed,如果设置成了Hashed,那密码是不可逆的,也不能得到密码,而Clear和Encrypted都是可以的,Clear是明文保存,而Encrypted是加密保存,如果设置成了加密保存,还需要设置一些密钥什么的,不然CreateUser时会出错,最后是属性requiresQuestionAndAnswer,它是表示是否需要有密码问题和答案来重新取回密码的机制,如果这个设置为true,那么你在使用GetPassword时,需要把这个用户的问题的答案一起传进去,不然也会产生异常。
3. [/b]匿名访问时设置[/b]Profile[/b]属性出现异常[/b][/b]
这也是需要配置文件里的属性进行配置:
<anonymousIdentification enabled="true" />
<profile defaultProvider="herSqlProfile">
<providers>
<add name="herSqlProfile" type="System.Web.Profile.SqlProfileProvider" connectionStringName="her" />
</providers>
<properties>
<add name="MyTheme" type="String" allowAnonymous="true"/>
</properties>
</profile>
首先是anonymousIdentification 把enbaled设置为true,然后再profile里的属性allowAnonymous="true"
相关文章推荐
- 使用Profile和Membership时的一些操作
- 使用Profile和Membership时的一些操作
- 使用Profile和Membership时的一些操作
- 使用Profile和Membership时的一些操作
- 使用Profile和Membership时的一些操作
- 使用ArcGIS API for ios开发时的一些经验与问题
- cocos2d-x 学习笔记之Tiled Map地图使用时的一些问题
- 使用控制台调试SharePoint出现的一些问题的解决方案
- 使用Everest下SMPlayer播放rmvb视频的一些问题
- 网页设计中Html使用的一些问题
- 初次安装使用cocoapods的一些问题
- HBase Thrift 接口的一些使用问题及相关注意事项
- latex 使用中的一些问题
- 使用无线模块的一些问题的总汇
- 使用ShareSDK分享到新浪微博遇到的一些问题
- 使用elasticsearch遇到的一些问题以及解决方法
- 使用高版本的SDK后再导入以前用低版本的project时,会遇到一些兼容性的问题。
- 使用redis缓存数据需要注意的问题以及个人的一些思考和理解
- 最近在编写一些bat工具时,发现自己对lua的io和正则表达式使用没什么了解,网络上转载解决问题后的文章。
- Win10上使用SVN遇到的一些问题