【问题标题】:Performing "Authorization" in ASP.NET MVC4 application with "Windows Authentication"使用“Windows 身份验证”在 ASP.NET MVC4 应用程序中执行“授权”
【发布时间】:2014-07-08 04:04:29
【问题描述】:

在我的 ASP.NET MVC4 应用程序中,我正在使用 Windows 身份验证并希望限制对各种角色的控制器操作方法的访问。比如:

[Authorize(Roles="Administrator")]
public ActionResult Index(){...}

注意:用户列表及其对应的角色保存在 SQL Server 数据库中。

到目前为止,我还没有找到完美的解决方案。所有人都使用表单身份验证。请帮助实施这一点。

【问题讨论】:

  • 您可以只应用此过滤器...如 ActionResults 过滤器,如果用户有效,它们可以进行身份​​验证,然后在索引操作之后将被调用,否则它们不会被调用。 OnActionFilter 让我们有权取消通话...

标签: asp.net-mvc-4


【解决方案1】:

我几周前刚刚实施了这项服务,在成功实施角色服务之前,您必须查看一些项目。

  1. 使用 aspnet_membership 表构建您的数据库。这是一个 关于数据结构概述的文章。 Article

  2. 配置您的连接字符串以与您的数据库通信并允许此类授权方法。提供了一个非常通用的连接字符串,它们是更强大的方法。

    <roleManager enabled="true" defaultProvider="SqlRoleProvider">
     <providers>
      <add name="SqlRoleProvider" type="System.Web.Security.SqlRoleProvider" connectionStringName="CorporateSiteConnectionString"/>
     </providers>
    </roleManager>
    <membership defaultProvider="CustomizedMembershipProvider">
     <providers>
      <add name="CustomizedMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="CorporateSiteConnectionString" applicationName="Sales Site"/>
     </providers>
    </membership>
    
  3. 创建数据抽象方法。如果您使用 Linq to Sql 并使用 dbcontext。您还可以实现带有 aspnet_membership 架构的存储过程。

  4. 测试用户。登录用户并检查他们的角色。

    bool isUser = Roles.IsUserInRole("Administrator");
    

如需完整指南,请查看this article.

【讨论】:

  • 我的申请很简单。我正在寻找实现授权的简单解决方案。请以这种方式提供帮助。
  • 既然你已经有了一个用户群。我建议您扩展过滤器或创建自定义过滤器,如here 所述
猜你喜欢
  • 2019-04-30
  • 1970-01-01
  • 2014-09-05
  • 2011-06-27
  • 1970-01-01
  • 1970-01-01
  • 2013-09-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多