2012-12-14 29 views
1

我是新來的網絡安全,所以我不想實現我自己的。我打算通過ASP.NET MVC Internet應用程序的VS2012模板使用SimpleMembership。問題是我需要通過Web API傳遞數據。如何手動驗證用戶在ASP.NET MVC互聯網應用程序模板

我打算對我的Web API使用基本身份驗證,所以我只需要在http標頭中傳遞用戶名/密碼。我可以使用Thinktecure.IdentityModel攔截消息。下面是一個使用ASP.NET成員的example

authConfig.AddBasicAuthentication((userName, password) => 
    Membership.ValidateUser(userName, password)); 

我可以用我自己的布爾函數替換Membership.ValidateUser。我用用戶名/密碼成功地查詢了我的自定義數據庫,並且一切正常。但是,我使用模板的用戶數據庫,因爲我不想存儲字符串(甚至編碼)的密碼。

我不清楚如何使用SimpleMembership的數據庫手動驗證憑據。我可以獲取UserProfile,但無法弄清楚如何檢查配置文件的密碼。

UserProfile user = context.UserProfiles.Find(1); 

==OUTPUT== 
user 
    UserId: 1 
    UserName: "bob" 

您是否知道我可以檢查輸入的密碼是否與現有用戶的密碼相匹配?

感謝您的幫助!

回答

0

爲什麼你不使用Membership.ValidateUser?這不僅限於ASP.NET成員資格,假設您的[InitializeSimpleMembership]here)屬性位於正確的位置,或者已經在其他位置自己執行了邏輯,並且您具有對WebMatrix等的正確引用,您仍然可以調用Membership.ValidateUser並且它將使用SimpleMemberships Validate user

如果你想自己去數據庫,並假設你正在使用散列密碼等,然後this文章可能會幫助你,因爲你需要散列你的輸入密碼之前選擇它,其餘的只是寫了一些EF或(任何其他數據庫訪問方法)從用戶名和散列密碼匹配的用戶表中選擇。但我可以想到沒有明顯的理由這樣做Membership.ValidateUser會爲你做這一切。

+0

嗨馬克 - ValidateUser()不適合我。我會在明天更新這個問題,並提供更多細節。並感謝鏈接散列密碼,看起來很有希望! – brudert

+0

@brudert偉大的東西,讓我知道錯誤是什麼爲ValidateUser(),我們可以得到修復。 –

相關問題