【问题标题】:Membership Authorization会员授权
【发布时间】:2013-12-05 13:25:54
【问题描述】:

我有一个网站,我使用 C# MVC3 Razor 来做这件事。对于授权和身份验证,我使用 Membership。要进行身份验证,我的代码可以正常工作,但要授权,我无法正常工作。我有一个“管理员”的规则。我是怎么做到的?

web.config

<roleManager enabled="true">
 <providers>
    <clear />
    <add connectionStringName="ApplicationServices" applicationName="/"
      name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" />
    <add applicationName="/" name="AspNetWindowsTokenRoleProvider"
      type="System.Web.Security.WindowsTokenRoleProvider" />
  </providers>
</roleManager>

   <system.web>
       <authorization>
            <allow roles="?,*"/>
            <deny users="Administrator" />
        </authorization>
    </system.web>

Controller.cs

        [Authorize(Roles = "Administrator")]
        public ActionResult Default()
        {
            if (Session["user"] != null)
                return View();
            else
                return RedirectToAction("Login");
        }

【问题讨论】:

  • 您需要提供更多信息! Default() 操作是否将您重定向到 Login 操作?您是否检查过以确保 Session["user"] 不为空?你为什么还要检查 Session["user"] 是否为空?

标签: c# asp.net-mvc-3 asp.net-membership


【解决方案1】:

您应该使用RoleProvider 进行授权。

标准之一,或implement a custom one.

【讨论】:

  • 在我的 web.config 我使用它
  • @Developer123 - 那么它应该可以工作。您需要将一个或多个用户添加到“管理员”角色,并且这些用户应该有权访问受 Authorize 属性保护的操作。
  • 我有 4 个用户担任“管理员”角色,但是当我使用 [Authorize(Roles = "Administrator")] 时,页面打不开
  • 尝试调试。在以管理员身份登录时调用未使用 Authorize 属性保护的操作。检查与您的委托人关联的角色。检查配置了哪个提供程序(我看到你没有在你的 roleManager 配置元素中设置 defaultProvider 属性)。
猜你喜欢
  • 2013-01-31
  • 1970-01-01
  • 1970-01-01
  • 2015-06-13
  • 1970-01-01
  • 1970-01-01
  • 2011-08-09
  • 2017-02-23
  • 1970-01-01
相关资源
最近更新 更多