【问题标题】:How to restrict authorization to controllers in ASP.NET MVC 4 app based on 'Admin' attribute in User database table如何根据用户数据库表中的“Admin”属性限制对 ASP.NET MVC 4 应用程序中控制器的授权
【发布时间】:2014-09-04 14:40:22
【问题描述】:

我有一个 ASP.NET MVC 应用程序,它有两个控制器 - 一个将用于所有注册用户(因此只有数据库中 User 表中的用户可以访问此控制器),另一个用于管理员(确定管理员通过 User 表中的 Admin 属性中的 True 值)。

澄清一下,User 表有四个属性:
ID (int) - 这是与用户的 Windows ID 相同的 ID
名字 (nvarchar)
姓氏 (nvarchar)
管理员(位)

我对此进行了一些研究,但未能理解我应该采取哪条路线。在 ASP.NET MVC4 中,根据用户是否为管理员来限制访问的最佳方法是什么?并且还要限制将其 ID 存储在数据库中的用户访问通用控制器?

任何帮助将不胜感激。谢谢。

【问题讨论】:

    标签: c# asp.net sql-server asp.net-mvc-4 authorization


    【解决方案1】:

    将所有管理员都放在一个 AD 组中会容易得多。然后你可以只使用授权属性 - http://www.asp.net/web-api/overview/security/authentication-and-authorization-in-aspnet-web-api

    但是如果您需要使用这个“用户表”,那么我认为您必须在每个控制器方法中添加一个 if 语句。像这样的:

    string username = User.Identity.Name;
    bool isadmin = select admin from db where user == username;
    if(isadmin)
    {
    return View();
    }
    else
    {
    return HttpNotFound();
    }
    

    【讨论】:

    • 感谢您的回复 abiNerd!这是我应该更多研究的解决方案,因为我仍在学习中,所以我对 AD 了解不多。是否可以通过应用程序部分管理广告?即,如果用户被授予管理员访问权限,是否可以使用 c# 代码将此成员添加到 AD 组?非常感谢
    • 是的,这是可能的 - stackoverflow.com/questions/2143052/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-28
    • 2013-10-07
    • 2017-12-03
    • 1970-01-01
    • 1970-01-01
    • 2011-02-06
    • 1970-01-01
    相关资源
    最近更新 更多