2013-05-13 14 views
0

我目前正在構建一個用於可視化和控制工業設施的ASP.NET MVC4 Web應用程序。現在是時候推行一些用戶和角色管理,以提供安全性。經過一段時間的調查後,我認爲最先進的方法就是SimpleMembershipProvider。所以這裏是我的問題:爲了兼容性和其他原因,我必須單獨使用數據庫中的現有表,所以我不能簡單地集成SimpleMembership,指向我們的數據庫並讓它自己創建所需的表。我只有這個現有的表,一般是這樣的:如何使用SimpleMembership與強制用戶表?

ID (Integer) 
UserName (String) 
Passwort (String) 
UserGroup (Integer) (this would be the equivalent to the role) 

是否有使用SimpleMembership與方式?或者 - 如果不是的話 - 你將如何實現一種替代(可能是基於cookie的)授權,最好是通過屬性來檢查用戶是否被授權基於例如。像IsLoggedIn和RequiredUserGroup(4)或類似的東西?

我真的很喜歡使用SimpleMembership機制,但我不明白它應該如何處理給定的數據庫字段。

任何幫助,非常感謝!

最好的問候, 羅布

回答

0

您可以自定義SimpleMembership包含的字段您的應用需求,如圖this article用戶配置文件實體/表格隨此定義出現。

[Table("UserProfile")] 
public class UserProfile 
{ 
    [Key] 
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)] 
    public int UserId { get; set; } 
    public string UserName { get; set; } 
} 

繼引用的文章,你可以在用戶組屬性輕鬆地添加到此表的說明。但是在SimpleMembership中,您不會將密碼存儲在UserProfile中。密碼作爲單向散列存儲在* webpages_Membership *表中,以及SimplemMembershipProvider的其他所需屬性。

更新: 如果您需要保留現有的模式和處理密碼存儲,您最好的選擇是create a custom membership provider as described in this tutorial

+0

謝謝你的回答,凱文!不幸的是,我需要與這個數據庫佈局相處。我希望有一種方法可以覆蓋實際的密碼檢查程序,因爲我們有一個專門的算法來處理密碼加密/解密。換句話說:數據庫模式不能被修改或擴展,而我可以在Web應用程序的範圍內做我喜歡的事情。我想我必須自己創造一些東西。任何其他想法的人? =) – Robert 2013-05-14 09:14:58

+0

請看我更新的答案。我會建議創建一個定製的會員提供給你的約束。 – 2013-05-14 13:27:56

+0

看起來很有前途,再次感謝。這種技術可能比一些DIY認證更安全。我會深入研究它,看看我是否可以將它與我的固定數據庫模式一起使用。 – Robert 2013-05-16 06:46:12