Asp.net mvc AuthorizeRole=";行政";在mvc3应用程序中不工作? 我在mvc3应用程序中设置了成员资格提供程序 我将它从本地sql express app_data/aspnetdb.mdf移植到本地Server2008实例 (这对于登录/etc和[Authorize]SomeMethod()来说目前运行良好) 我最近添加了1个新的aspnet_角色(“管理员”)和1个新的aspnet_用户角色协会条目,其中包含我的用户名

Asp.net mvc AuthorizeRole=";行政";在mvc3应用程序中不工作? 我在mvc3应用程序中设置了成员资格提供程序 我将它从本地sql express app_data/aspnetdb.mdf移植到本地Server2008实例 (这对于登录/etc和[Authorize]SomeMethod()来说目前运行良好) 我最近添加了1个新的aspnet_角色(“管理员”)和1个新的aspnet_用户角色协会条目,其中包含我的用户名,asp.net-mvc,asp.net-mvc-3,asp.net-membership,Asp.net Mvc,Asp.net Mvc 3,Asp.net Membership,角色表: ApplicationId RoleId RoleName LowereRoleName说明 3F96CA96-CCB3-4780-8038-AF3CCE0BD4F2 9B5B798D-E56E-4144-A12C-7C8945FCB413行政管理员 用户角色: 用户标识RoleId 58974159-E60E-4185-AD00-F8024C7C5974 9B5B798D-E56E-4144-A12C-7C8945FCB413 Q1:为什么以下代码不允许我执行此控制器操作 [

角色表:

ApplicationId RoleId RoleName LowereRoleName说明 3F96CA96-CCB3-4780-8038-AF3CCE0BD4F2 9B5B798D-E56E-4144-A12C-7C8945FCB413行政管理员

用户角色:

用户标识RoleId 58974159-E60E-4185-AD00-F8024C7C5974 9B5B798D-E56E-4144-A12C-7C8945FCB413

Q1:为什么以下代码不允许我执行此控制器操作

    [Authorize]
    [Authorize(Roles = "Admin")]  // !!! This is keeping me out...commented out I can get in but I'm set as "Admin" and have tried lower case "admin" as well.
    public ActionResult SomeMethod()
    {}

Q1a:我必须在web配置中设置另一个角色提供程序连接字符串才能使其正常工作吗?

确保您的应用程序ID相同您可能正在使用不同的应用程序ID,检查更多信息

尝试以下代码以确定您的问题:

public ActionResult SomeMethod() {

    if (!User.IsInRole("Admin")) 
        throw new SecurityException("User is not an admin.");

}
如果您遇到异常,则表示您的会员资格提供商有问题,或者您不是担任
管理员
角色,或者您的applicationid配置不同,如下所示


以下是一些可能性。

您能否发布web.config中有关成员资格和角色提供程序的部分内容。这听起来好像您的应用程序名称设置不正确

 <roleManager enabled="true">
      <providers>
        <clear/>
        <add name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" connectionStringName="ApplicationServices" applicationName="Your Application Name here" />
      </providers>
    </roleManager>

编辑 未设置应用程序名称。它需要设置为某个名称,并且必须与数据库表中的应用程序名称匹配:aspnet\u Applications


如果您的web配置具有applicationName=“TestApp”/>那么您的数据库表也需要在aspnet_应用程序表中设置TestApp

您是否在web中的
..
中提供了正确的连接参数。configHi all!我的roleManager成员资格字符串出错。设置为false。我刚刚输入了roleManager部分。设置为false…应用程序名称e在webconfig和数据库中默认为/看起来定义正常。RoleManager配置部分未正确设置。谢谢!