【问题标题】:How to use SimpleMembership with mandatory user table?如何将 SimpleMembership 与强制用户表一起使用?
【发布时间】:2013-05-13 10:35:25
【问题描述】:

我目前正在构建一个用于可视化和控制工业设施的 ASP.NET MVC4 Web 应用程序。现在是时候实施一些用户和角色管理以提供安全性了。经过一段时间的调查,我认为最先进的方法是 SimpleMembershipProvider。所以这是我的问题:出于兼容性和其他原因,我必须仅使用我们数据库中的现有表,所以我不能简单地集成 SimpleMembership,指向我们的数据库并让它自己创建所需的表。我所拥有的就是这个现有的表格,它通常看起来像这样:

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

有没有办法使用 SimpleMembership?或者 - 如果不是 - 您将如何实现替代(可能基于 cookie)类型的授权,最好使用属性来检查用户是否基于例如授权像 IsLoggedIn 和 RequiredUserGroup(4) 或类似的东西?

我真的很想使用 SimpleMembership 机制,但我看不出它应该如何处理给定的数据库字段。

非常感谢任何帮助!

最好的问候, 抢

【问题讨论】:

    标签: asp.net-mvc-4 authorization simplemembership


    【解决方案1】:

    您可以自定义SimpleMembership 以包含您的应用程序需要的字段,如this article 所示。 UserProfile 实体/表带有此定义,开箱即用。

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

    按照参考文章中的说明,您可以轻松地将 UserGroup 属性添加到此表中。但在 SimpleMembership 中,您不会将密码存储在 UserProfile 中。密码与 SimplemMembershipProvider 的其他必需属性一起作为单向哈希存储在 *webpages_Membership* 表中。

    更新: 如果您需要保留现有架构并处理密码存储,最好的选择是create a custom membership provider as described in this tutorial

    【讨论】:

    • 感谢您的回答,凯文!不幸的是,我需要适应这种数据库布局。我希望有一种方法可以覆盖实际的密码检查程序,因为我们有一个特殊的算法来处理密码加密/解密。换句话说:数据库模式无法更改或扩展,而我可以在 Web 应用程序的范围内做我喜欢的事情。我想我必须自己建立一些东西。任何其他的想法吗? =)
    • 请看我更新的答案。考虑到您的限制,我建议创建一个自定义会员提供程序。
    • 看起来很有希望,再次感谢。这种技术可能比一些 DIY 身份验证更安全。我会深入研究它,看看我是否可以将它与我的固定数据库架构一起使用。
    猜你喜欢
    • 1970-01-01
    • 2012-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-01
    • 2011-04-03
    • 1970-01-01
    相关资源
    最近更新 更多