【问题标题】:ASP.net mvc4 - how to make make user and role anagementASP.net mvc 4 - 如何进行用户和角色管理
【发布时间】:2015-09-05 07:04:01
【问题描述】:

我想使用 MVC4 创建小型网页,因此我看不出有任何理由进行自定义身份验证,我想使用已经实现和工作的身份验证。 我的问题是,默认情况下我无法从浏览器管理用户和角色。出于这个原因,我想实现我自己的简单管理。问题是我不知道如何通过实体框架访问成员表。 当我启动应用程序时,webform 身份验证会在我的数据库中创建表。在我停止应用程序并从我的数据库中为实体框架创建数据模型后,我在 webform 身份验证中遇到了许多错误。

所以我的问题是:当我想访问会员数据时,我必须使用已经创建的模型还是有什么简单的方法可以通过实体框架访问它?

【问题讨论】:

    标签: c# asp.net entity-framework asp.net-mvc-4 authentication


    【解决方案1】:

    事情没那么简单。首先使用 Nuget 包控制台或管理添加实体框架。然后你应该为你的数据库创建模型,比如:

     public class User
        {
            [DatabaseGenerated(DatabaseGeneratedOption.Identity)]        
            [Column(Order = 1)]
            public long N { get; set; }
            [Required]
            [Column(Order = 2)]
            public string Id { get; set; }   
            public string Login { get; set; }    
            public string Password { get; set; }    
            public int AccountRole { get; set; } 
        }
    

    下一步是创建数据库上下文:

     public class MyDbContext: DbContext, IDisposable where T : class
    {
        public DbSet<User> Users { get; set; }        
    
        public MyDbContext() : base("$DbConnectionString") { }         
    
        public new void Dispose()
        {
            base.Dispose();            
        }      
    } 
    

    将 $DbConnectionString 更改为您的连接字符串。

    但不要将密码存储为纯文本字符串。加密它。 然后在控制器中,如果用户已通过身份验证并被识别为 MyDbContext 的 Users 属性中的用户之一,则必须操作 cookie 来分配它们。检查他的 AccountRole 属性是否具有 Admin 值并添加另一部分 cookie。然后,每次此(或任何其他)用户尝试访问控制器中的安全方法时,您都会检查此 cookie。

    附: 即使在像您这样的紧凑项目中,使用 IRepository 甚至 IRepository&lt;T&gt; 模式也会很好。

    【讨论】:

    • 谢谢,我已经在做同样的事情了,但我的问题是我使用了 2 个 dbcontexts
    • Np。顺便说一句,可以使用两个 Db 上下文甚至更多,但不能使用两个 DbContext 实例。因此,如果您使用 DbContext 的实例,您通常不会在处置此实例之前实例化 DbContext。许多问题在于 DbContext 没有在应该被释放或在将任何内容保存到数据库之前被释放
    猜你喜欢
    • 1970-01-01
    • 2013-08-01
    • 2012-08-24
    • 1970-01-01
    • 2012-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多