2012-09-15 42 views
1

我目前正在開發一個項目,該項目將具有移動設備的網站和應用程序。我將需要一種方式讓用戶登錄到我的網站查看某些區域。我知道我需要構建一個WCF RESTful服務,但是我堅持如何繼續創建用戶。我本來打算使用內置.NET成員資格,但是我讀到的內容越多,聽起來就越糟糕,如果我有很多用戶。然後我想構建一個新的提供者,它可以給我.NET內部成員的所有功能,但是我可以更好地控制一切。最後一個想法是構建一個完整的會員系統,但是我擔心我會失去構建.NET會員系統的功能。我基本上只是想找人指出我的正確方向並解釋原因。網站和移動應用程序的會員系統

現在我想處理這將是建立一個全會員制的最佳方式。我想我會通過我的網站將調用的後端WCF和RESTful服務調用我的數據訪問。我現在還沒有意識到我可以通過WCF驗證用戶名和密碼。

感謝您的輸入。

+0

很多用戶意味着什麼?一天1000? 100000? –

回答

3

我們做我們的一些項目,這事,這裏是我們如何完成它的摘要。請記住,這只是一種方法,我們也成功地編寫了我們自己的會員供應商。

我們有3個主要項目:

  1. Data.project - 類庫
  2. WebApp.project - MVC應用
  3. API.project - WCF服務

我們使用內置在.NET會員供應商中,因爲它開箱即用。這給了我們MVC和API項目中的基本註冊,密碼更改,角色管理以及基於角色容易控制的角色權限和訪問控制。

的默認成員資格提供將使用自己的表來存儲用戶數據。

然後,我們創造我們自己的用戶和個人資料表和數據結構的外鍵返回給用戶的.​​NET membershipId。這使我們能夠靈活地完成我們需要用戶配置文件所做的所有應用程序特定事情,同時仍然允許我們訪問默認提供程序。

認證是直線前進的MVC項目,你現在可以使用.NET成員方法,通過用戶名和密碼進行身份驗證:

if(Membership.ValidateUser(username,password)){ 
    FormsAuthentication.SetAuthCookie(username,password); 
} 

對於你沒有FormsAuthentication豪華的WCF項目,但您仍然可以使用默認的成員資格提供程序來驗證用戶憑據。

之後你如何處理身份驗證是由你和你的項目,但對於基本需求,我們通常與由WCF服務驗證後返回的認證令牌去。然後,此令牌隨每個WCF請求一起提供,以證明它們已通過驗證,通常位於請求標頭中。

對於WCF我們基地64編碼的用戶名和密碼提交憑據到服務器時,那麼如果成功的話,我們傳回的身份驗證令牌:

string decoded = System.Text.Encoding.UTF8.GetString(System.Convert.FromBase64String(Authmodel)); 
//convert your string into your authentication model here then 
if(Membership.ValidateUser(model.user,model.pass)) 
{ 
    //return new authentication token 
} 

我們還包括額外的邏輯註冊過程中打造出了我們的專有用戶和配置文件表,這是在數據項目中處理的,以便WCF和MVC都可以訪問它。

此外,數據處理項目我們的用戶和個人資料表,並在.NET成員提供的表,使得信息能夠通過這兩個應用程序訪問的之間的聯繫。

我意識到這一切都很模糊,但也許它可以幫助您想出一個統一處理身份驗證的選項。如果您對特定部分有任何疑問,請告訴我,我希望這些信息對您有用。