使用MemberShip,Profile时碰上的一些问题
1.????? 使用Profile.GetProfile(string username)時碰上的問題<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
我想在一個頁面里編輯任意一個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.????? 使用MembershipUser.ChangePassword碰上的問題
我自定義了一個添加,修改,刪除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.????? 匿名訪問時設置Profile屬性出現異常
這也是需要配置文件里的屬性進行配置:
??? <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"
轉載于:https://www.cnblogs.com/dotLive/archive/2007/03/15/676112.html
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的使用MemberShip,Profile时碰上的一些问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Intellij Idea使用教程汇总篇
- 下一篇: iOS开发技巧 - Size Class