【问题标题】:MVC4 Roles Authentication GroupsMVC4 角色身份验证组
【发布时间】:2013-08-23 14:18:12
【问题描述】:

我一直在尝试在我的 MVC4 应用程序上实现基于角色的安全性,以便阻止非管理员成员执行某些控制器操作。我在 MSDN 上找到了这个信息页面:http://msdn.microsoft.com/en-us/library/5k850zwb%28v=vs.100%29.aspx

有人可以告诉我使用以下行来优化管理组本身的最佳位置是什么:

Roles.CreateRole("Admin");

我知道我想检查我的用户数据库表并检查主控制器索引上的 IsAdmin 列,但我不确定在哪里创建实际的管理员角色本身。任何帮助将不胜感激。

【问题讨论】:

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


    【解决方案1】:

    只需手动将其添加到数据库的webpages_Roles 表中。

    如果您想以编程方式执行此操作,请将其添加到 InitializeSimpleMembershipAttribute.cs 文件中的 Filters 文件夹中,位于以下行下方:

    WebSecurity.InitializeDatabaseConnection("DefaultConnection", "UserProfile", "UserId", "UserName", autoCreateTables: true);        
    
    // here it REALLY is...!
    if (!Roles.RoleExists("Admin"))
        Roles.CreateRole("Admin"); 
    

    【讨论】:

    • 您好 Amin,我已尝试过您的建议,但现在收到以下错误:此方法只能在应用程序的预启动初始化阶段调用。使用 PreApplicationStartMethodAttribute 声明将在该阶段调用的方法。
    • 仍然在 if 语句的 compule 上抛出错误,用户 PreApplicationStartMethodAttribute 错误
    • 嘿,Amin 不用担心它比整个早上都在尝试这个问题要少,我在过滤器文件夹中没有 InitializeSimpleMembershipAttribute.cs 文件,我正在使用 ADFS 进行身份验证原因?
    • @Jay - 是的,伙计!如果您使用Internet Application 模板和默认的简单成员资格,则您拥有该文件...!现在,我不认为你可以使用这种方法......!因此,您最好手动添加它们,永远一次......
    • 我的数据库的用户表中有一个字段,名为 IsAdmin。是否有任何方法可以针对此字段授权控制器或页面?
    猜你喜欢
    • 2016-09-23
    • 2015-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-22
    • 2020-08-13
    • 2023-04-05
    相关资源
    最近更新 更多