首页 文章

在MVC 5项目上使用ASP.NET标识,但httpcontext User.ProviderName是“AspNetSqlRoleProvider”

提问于
浏览
4

我有一个使用ASP.NET身份(Invidual用户帐户)的MVC 5项目 . 作为数据库ORM,我正在使用实体框架6,而IoC由Ninject负责 .

解决方案结构如下

  • MVC项目 - 拥有我的控制器,视图和ninject设置 . 对于Ninject,我从nuget获得了Ninject.MVC3 .

  • 数据项目---有我的DataContext(IdentityDbContext)和我的ApplicationUser(IdentityUser) . 我的数据服务和所有存储库

  • 核心项目 - 拥有我的所有实体和接口

[Authorize] 属性工作正常,我必须登录才能访问带注释的操作,但是当我设置 [Authorize(Roles = "Admin")] 时,我得到了

找不到存储过程'dbo.aspnet_CheckSchemaVersion' .

我创建了我的CustomAuthorize attibute,它基本上是Authorize的副本,并注意到 protected virtual bool AuthorizeCore(HttpContextBase httpContext) User.ProviderName中的httpcontext是"AspNetSqlRoleProvider" .

所以我在我的web.config中添加了Rolemanages clear . 这导致了

配置错误说明:处理为此请求提供服务所需的配置文件时发生错误 . 请查看下面的具体错误详细信息并相应地修改配置文件 . 分析器错误消息:找不到默认角色提供程序 . 源错误:第53行: - >第54行:第55行:第56行:第57行:源文件:... myproject \ WebUI \ web.config行:55

那么这笔交易是什么?如何设置默认角色提供程序以使用ASP.NET标识?

1 回答

  • 17

    所以在我发布问题之后我就找到了答案 . 我不得不补充一下

    <system.webServer>
        <modules>
    ...
          <remove name="RoleManager" />
        </modules>
      </system.webServer>
    

    这样做了 . 但仍有一个问题是为什么?

相关问题