2013-05-03 46 views
0

MVC3 Web應用綁定到SQL Server 2012上的數據庫。這將是由第三方託管的面向公衆的網站。在MVC3中對現有數據庫使用表單身份驗證

我是使用表單身份驗證的新手。我在幾個月前使用默認的Internet模板在VS 2012中創建了一個項目,因此我擁有標準的accountcontroller等。我注意到它構建了一個名爲aspnet-MyAppName的新空數據庫 - 一串數字。我認爲這是用戶配置表等。

我想知道如果我應該隨它去。我已經在現有數據庫中構建了一個用戶表,並且我使用Crypto庫構建了一個類來散列並存儲密碼,並創建用戶帳戶。我正在實施用於應用程序內安全性的表單身份驗證,即確保人員有權查看僅限會員的頁面。

我需要做什麼來將我現有的validateUser類與Forms Auth集成? 如果我想在現有數據庫中擁有所有用戶安全性的東西,那麼我只需要在某處更改連接字符串?還是有更多的呢?

就像我剛纔說的,我是Forms Auth的新手,所以如果我想做很奇怪的東西,並且應該保持原樣,請告訴我。謝謝。

====編輯=======

Theanks Zach。我開始考慮這一點,因爲我想要在現有的數據庫中的成員表,我運行了asp_regsql.exe,它添加了表。我需要在成員用戶表和一些現有表之間添加一個關係,但是我所有的ID列都是int,並且所有成員表都是uniqueidentifers,它們不會關聯。我現有的表格中包含內容。我嘗試改變uniqueidentifiers,但它不會工作,甚至嘗試刪除約束,然後表,但約束不會下降,說他們不是約束。任何想法如何成功地將新成員資格表與我現有的資源配對?

+0

我建議你,是一個自定義的成員,這樣你就不會需要額外的表,自定義的成員提供的想法是你現有的安全旁邊工作結構 – 2013-05-07 14:22:39

回答

0

好的做法是Mempership提供商

在你的web.config中指定的認證模式和自定義成員資格提供

<authentication mode="Forms"> 
    <forms loginUrl="~/Account/LogOn" timeout="2880" /> 
</authentication> 

<membership defaultProvider="CustomMembershipProvider"> 
    <providers> 
    <clear/> 
    <add name="CustomMembershipProvider" 
     type="CustomMembership.Models.CustomMembershipProvider" 
     connectionStringName="" 
     enablePasswordRetrieval="false" 
     enablePasswordReset="true" 
     requiresQuestionAndAnswer="false" 
     requiresUniqueEmail="false" 
     maxInvalidPasswordAttempts="5" 
     minRequiredPasswordLength="6" 
     minRequiredNonalphanumericCharacters="0" 
     passwordAttemptWindow="10" 
     applicationName="/" /> 
    </providers> 

簡單例子來創建自定義的成員,有很多的aditional的的功能,可以擴展

public class CustomMembershipProvider : MembershipProvider 
{ 

    public override bool ValidateUser(string username, string password) 
    { 
     //all your logic to validate the user credentials to your custom db 
    } 

} 

注意:這只是一個簡單的例子,讓會員提供的完整文檔看到http://msdn.microsoft.com/en-us/library/f1kyba5e(v=vs.100).aspx

和一個完整的例子,你可以在這裏找到http://msdn.microsoft.com/en-us/library/6tc47t75(v=vs.100).aspx