我想在我的MVC 4第一次使用SimpleMembership,並且我已經有一個基於它創建的現有數據庫和EF5模型!我搜查了很多,但我無法找到如何在我的情況下使用它,並且還有我自己的模型下的一切。使用MVC 4 SimpleMembership與現有的數據庫優先EF模型
如果有人能給我一個想法如何做到這一點,這將是非常好的。
感謝
我想在我的MVC 4第一次使用SimpleMembership,並且我已經有一個基於它創建的現有數據庫和EF5模型!我搜查了很多,但我無法找到如何在我的情況下使用它,並且還有我自己的模型下的一切。使用MVC 4 SimpleMembership與現有的數據庫優先EF模型
如果有人能給我一個想法如何做到這一點,這將是非常好的。
感謝
在標籤的appSettings你的web.config,添加行
<add key="enableSimpleMembership" value="true"/>
SimpleMembership是建立在這樣從這裏你只需要編寫
[InitializeSimpleMembership]
以上的公共類AccountController:控制器
當你想f請求用戶登錄您在頁面控制器中編寫的某個頁面
[Authorize]
該表格將在您的數據庫中自動生成。如果你想添加更多的字段到這些表中,你只需要簡單地谷歌它。
這裏是作爲一個參考點一個鏈接以獲取更多信息http://weblogs.asp.net/jgalloway/archive/2012/08/29/simplemembership-membership-providers-universal-providers-and-the-new-asp-net-4-5-web-forms-and-asp-net-mvc-4-templates.aspx
純粹的,它可能是創建一個ASP.NET MVC 4 Web應用程序項目的新的互聯網應用程序模板(即通過文件是一個好主意>新項目)。
如果您查看AccountController
,正如@ zms6445所述,它的裝飾屬性爲InitializeSimpleMembership
。您可以在根目錄下的Filters文件夾的InitializeSimpleMembershipAttribute.cs文件中找到該屬性的實現。
在這裏,這是謎題的缺失部分 - 您需要掛鉤您的現有數據庫,以便它被SimpleMembershipProvider
使用。這是代碼,您需要:
private class SimpleMembershipInitializer
{
public SimpleMembershipInitializer()
{
try
{
if (!WebSecurity.Initialized)
{
WebSecurity.InitializeDatabaseConnection("CONNECTION_STRING_NAME", "USER_TABLE", "USER_ID_FIELD", "USER_NAME_FIELD", autoCreateTables: true);
}
}
catch (Exception ex)
{
throw new InvalidOperationException("Something is wrong", ex);
}
}
}
需要注意以下幾點:
CONNECTION_STRING_NAME
是在你的web.config的ConnectionStrings條目 - 你不能在這裏使用的模型連接字符串 - 在SimpleMembershipProvider
不認識到這種格式!您需要指定一個System.Data.SqlClient
連接字符串,例如
< add name =「CONNECTION_STRING_NAME」connectionString =「data source = SERVER; initial catalog = DATABASE; user id = USER; password = PASSWORD;」的providerName =「System.Data.SqlClient的」/>
USER_TABLE
是在你的數據庫中的表來保存額外的用戶信息,如名字,姓氏等,這是與通過USER_ID_FIELD自動生成的表。
USER_ID_FIELD
通常是Users表的主鍵。它必須是int
。
USER_ID_NAME
是用戶的唯一名稱,可以是電子郵件地址。
autoCreateTables
設置爲true
確保SimpleMembership工作所需的表格在不存在的情況下創建。
當然,這個代碼只得到,如果你通過AccountController
打一個頁面,因爲這已裝修由屬性解僱。你可以在那裏放置一個斷點,並看到它在行動。
這應該讓你開始 - 互聯網應用程序模板是一個很好的模板,如果你被困住了,
希望這會有所幫助。
我按照你的指示,但我從LazyInitializer得到一個TargetInvocationException。有關它的任何想法? – 2013-05-05 15:15:06
我發現它:) SQL服務器防火牆導致錯誤!我討厭防火牆:) – 2013-05-05 15:53:38
@UmutCanKöseali我認爲我有同樣的問題,你如何關閉sql防火牆? – Cybercop 2013-05-30 09:47:27