2

爲移動用戶構建一個新的移動Web平臺,以在其手機上購買&下載內容。在過去,我們已經使用了完全定製的登錄機制,但我正在調查爲下一版本的平臺使用自定義成員資格提供程序。實施具有輕微離奇要求的自定義會員供應商

事情是,我們有一些稍微奇怪的「登錄」機制要求,所以我不是100%確定MembershipProvider是最合適的。

只是在找一些一般反饋下面用「是的,會員供應商是一個不錯的選擇」或「不,你在敲打一個圓孔方釘」

要求要求

  1. 用戶可能需要用「手機號碼」登錄(用戶名)&「針」(密碼) 這符合得很好,因爲他們已經簽署了與短信確認,它滿足ValidateUser(string username, string password)方法實施

  2. 用戶可能被要求僅使用「手機號碼」登錄。在這種情況下,我們不打擾我們身邊的身份驗證。它會減少用戶的步驟數量,並在我們試圖向他們付費時由特定的操作員進行驗證。 (運營商可以驗證輸入的手機號碼與手機在打到運營商付款網站時是否匹配)......所以即使用戶有密碼,我們也需要在某種程度上欺騙會員供應商,讓他們進入用空白密碼。

  3. 用戶根本不需要登錄。在這種情況下,我們可以透明地將用戶反射到特定的網絡運營商網頁,當他們透明地反饋給我們時,我們將在頭部中獲得移動號碼。在這種情況下,我們需要以編程方式從頭文件中獲取該編號,在代碼後面執行登錄(同樣沒有任何引腳/密碼),用戶將自動登錄。

要求2

3有點奇怪。我們基本上有三種不同的登錄機制,一個會員提供商需要滿足。

  • 用戶輸入的移動&用戶輸入的PIN
  • 用戶只輸入移動(代碼後面我想,以滿足引腳要求)
  • 完全透明登錄(代碼背後做整個登錄過程)

任何人都有任何意見/反饋上述或有任何意見的任何古怪的會員提供實施,你在過去做過。

+0

我幾乎同樣的問題,以你的..如果你可以建議我想做的事情=>問:我正在開發自定義的成員提供,我允許用戶通過自己的EMAILID登錄,用戶名,但MembershipProvider.ValidateUser()將用戶名作爲參數(並且我的用戶也有用戶名,只是爲了顯示在他們的配置文件中)。所以我該怎麼做。目前我已經實現了ValidateUser()以在該參數中使用emailid ..但它看起來不是很好的做法..所以這樣做嗎? – 2011-02-23 12:07:45

回答

1

我認爲它可以工作。我們在我們的一個網站上進行#3。這是我們用來處理它的一段代碼。要使用它,請創建一個登錄頁面(transparentlogin.aspx或類似的東西),確保web.config文件允許匿名訪問此頁面,並將透明日誌的page_load函數放在這樣的代碼中。aspx頁面:

const string specialpassword = "ThisIsOurSpecialPasswordForBehindTheScenesLogin"; 

if (MobileNumberFoundInHeader()) 
{ 
    string username = GetMobileNumberFromHeaders(); 
    // Authenticate the user behind the scenes 
    System.Web.Security.FormsAuthentication.SetAuthCookie(username, false); 
    System.Web.Security.FormsAuthentication.Authenticate(username, specialpassword); 
} 
else 
{ 
    throw new Exception ("Mobile Number Missing"); 
} 

然後,在對的MembershipProvider功能的ValidateUser,確保你做一次檢查是這樣的:

public override bool ValidateUser(string username, string password) 
{ 
const string specialpassword = "ThisIsOurSpecialPasswordForBehindTheScenesLogin"; 

bool ValidationSuccess = false; 

// If the password being passed in is the right secret key (same 
// for all users), then we will say that the password matches the 
// username, thus allowing the user to login 
if (password == specialpassword) 
{ 
    ValidationSuccess = true; 
} 

if (DoStandardUsernamePasswordVerification() == true) 
{ 
    ValidationSuccess = true; 
} 

return ValidationSuccess; 
} 

至於需求#2,我有點困惑。運營商究竟是什麼?我以爲我們正在處理使用網絡瀏覽器瀏覽網站的手機。操作員在那裏適合?如果我上面提出的解決方案沒有幫助,請發佈有關運營商的更多詳細信息的回覆。

+0

歡呼......是的,這幾乎是我來到的結論。回覆:「運營商」......我的意思是移動電話網絡運營商......例如AT&T,沃達豐,T-Mobile等等...... – 2009-07-07 10:07:54