当前位置: 首页 > 面试题库 >

如何在MVC中使用Windows身份验证,但如何使用较新的身份数据库表进行角色存储?

林英锐
2023-03-14
问题内容

我正在使用MVC
5和Windows身份验证,并且需要在数据库而不是AD组中使用角色管理。我过去曾使用过asp.net成员身份解决方案来执行此操作,但希望使用更现代的身份表。我无权访问广告组。如何才能做到这一点?


问题答案:

就我个人而言,我将跳过ASP.NET标识部分,而仅使用自定义的授权过滤器即可。

从历史上看,在MVC中,身份验证(您可以证明自己是 )和授权(您 可以 做什么)之间的界限很模糊。

启用Windows身份验证后,将执行 Authentication 部分,并且已经针对设置了Domain \
Username形式的用户身份HttpContext。您需要做的是弄清楚它们的 授权 用途。

该问题被标记为Oracle,您可能希望使用缓存或类似的方法,因此确切的方法会有所不同。为简单起见,我们假设您有一个静态UserManager.IsInRole类/方法,该类/方法使用Domain
\
Username和逗号分隔的Roles字符串进行检查,并返回布尔值,指示用户是否处于允许的角色之一。在实践中,您可能需要弄混“依赖注入”,这对于使用过滤器可能会有些棘手。

public class DbAuthorize : System.Web.Http.AuthorizeAttribute
{
    protected override bool IsAuthorized(HttpActionContext actionContext)
    {
        var isAuthorized = base.IsAuthorized(actionContext);

        var user = actionContext.ControllerContext.RequestContext.Principal.Identity;

        if (user == null)
            return false;

        return isAuthorized && UserManager.IsInRole(user.Name, this.Roles);
    }
}

然后可以使用它代替“Authorize控制器”或“选择的操作”中的标准属性。



 类似资料:
  • 假设我们有以下部分的web安全配置:

  • 我有一个节点项目 我试过的密码- 运行此命令时,当secret_password错误时,它会正确显示,但当它正确时,它只显示一个单词swagger,表示swagger。io链接。 我搜索了一下,但是没有得到任何关于这个的信息或者例子。我错过了什么吗?

  • 我必须使用laravelajax将数据保存在具有userid的数据库表中。谁能帮我解决这个问题 我的控制器代码 它得到的反应是 我必须保存登录用户ID提交......我user_id空我怎么存储user_id请帮帮我。 提前谢谢

  • 我正在尝试用.NET中的LDAP制作一个简单的身份验证系统。我检查了.NET中的一些名称空间,并简单地制作了标准代码片段,如下所示。 我有一个管理员用户名和密码和,用于对客户端应用程序进行身份验证。我有第二个用户名和密码和,需要在LDAP中检查才能登录。 是管理帐户,只是LDAP中的用户。那么如何检查的密码呢?

  • 我是Spring安全的新手,我想用数据库验证用户。我已经用jdbc创建了一个登录页面和一个身份验证提供程序,它检查用户是否存在于数据库中。但是我的代码没有这样做的问题是,它允许所有用户登录!我的代码怎么了?谢谢你的帮助。 这是我的安全会议。xml:

  • 在我配置了下面的配置之后,它不会连接到Active Directory。我无法使用Active Directory的帐户登录。会有什么问题? 我有一个Ubuntu服务器18.04,带有ApacheGuacamoleV1。0.0. 安装。我想使用LDAP身份验证来验证用户。我已经下载了鳄梨酱-auth-ldap-1.0.0。jar和jldap-4.3。jar扩展。 10.10.10.21,10.10