【问题标题】:I would like to control views based on user role in MVC C#我想根据 MVC C# 中的用户角色控制视图
【发布时间】:2017-12-23 05:02:39
【问题描述】:

我想根据用户角色控制我的操作中的视图。角色存储在数据库中,我已经覆盖了我的AuthorizeCore 以根据谁有权访问视图返回真或假。我需要知道控制器中的userRole

如何确定当前用户的角色?

[Authorize]
public ActionResult Index() {

if (userRole = "Admin") { return View("Admin");}
else {return View("Viewer");
}

【问题讨论】:

    标签: c# .net


    【解决方案1】:

    假设您的控制器扩展了System.Web.Mvc.Controller,那么您可以访问基类上的User 属性。这将为经过身份验证的用户提供一个IPrincipal 实例,其中包括.IsInRole(string role)

    public ActionResult Index() {
    
        if (User.IsInRole("Admin")) { return View("Admin");}
        else {return View("Viewer");
    }
    

    注意:如果您配置的角色提供程序不自动支持使用.IsInRole,您可以使用User.Identity.Name 实现您自己的数据库查找

    【讨论】:

    • 感谢约翰!由于角色在数据库中,我需要在通过 User.IsInRole 访问它们之前分配(设置)角色。我想知道如何/在哪里分配角色。
    • @anand 你使用什么角色提供者?
    • 我不认为我正在使用任何角色提供者:(
    • 当您说“角色存储在数据库中”时,您是什么意思?
    • 所有用户和角色都在数据库中定义。
    猜你喜欢
    • 2014-04-04
    • 1970-01-01
    • 1970-01-01
    • 2012-07-07
    • 2012-11-08
    • 2014-01-31
    • 2016-04-07
    • 2011-01-26
    • 2014-01-17
    相关资源
    最近更新 更多