无法连接到数据库来执行身份功能

2024-04-11

我使用 ASP.NET MVC5 创建了一个新应用程序,使用个人用户帐户来确保安全性,并使用代码优先迁移来进行模型/数据库建模。所有选项均为默认。

我想为其设置自定义用户和角色,所以我使用创建了一个种子RoleManager and UserManager只是为了填充数据库。它工作正常,创建 3 个用户、3 个角色并正确设置每个用户的角色。

我可以正确登录应用程序。问题是我无法使用以下方法执行任何 Identity 方法User,这是登录的用户,我唯一能得到的是User.Identity.IsAuthenticated值,以及User.Identity.Name,这是正确的。其他所有方法都像Roles.GetRolesForUser("John"), or User.IsInRole("Student"),总是生成此异常:

ProviderException:角色管理器功能尚未启用。

好吧,就像在本文 https://stackoverflow.com/questions/3874279/the-role-manager-feature-has-not-been-enabled,我设法插入了<roleManager enabled="true" />在 Web.config 中,现在需要一个真的很长时间才回复,并生成如下异常:

参考:

Roles.IsUserInRole("Student")

生成:

HttpException

参考:

Roles.GetRolesForUser(User.Identity.Name)

生成:

NullReferenceException

使用登录的学生角色用户访问“关于”页面:

[Authorize(Roles="Teacher")]
public ActionResult About()
{
    ViewBag.Message = "Your application description page.";

    return View();
}

生成:

SqlException
HttpException

就像我根本没有连接到数据库,这是自动生成的 LocalDB,我可以填充种子方法,甚至登录到应用程序。

我什至可以从 AspNetUsers 表加载数据并使用下面的代码在视图中显示它:

using (Models.ApplicationDbContext db = new Models.ApplicationDbContext())
{
    List<Models.ApplicationUser> Users = db.Users.ToList();

    ViewBag.Users = Users;
}

return View();

请帮忙 :'(


这是种子代码,工作正常,因此它可以使用身份引擎连接到数据库。

protected override void Seed(LocalBDAuthTest.Models.ApplicationDbContext context)
{
    #region Create Roles Student, Teacher e Administrator

    var RoleManager = new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(context));

    // Student
    if (!RoleManager.RoleExists("Student"))
    {
        RoleManager.Create(new IdentityRole("Student"));
    }

    // Teacher
    if (!RoleManager.RoleExists("Teacher"))
    {
        RoleManager.Create(new IdentityRole("Teacher"));
    }

    // Administrator
    if (!RoleManager.RoleExists("Administrator"))
    {
        RoleManager.Create(new IdentityRole("Administrator"));
    }

    #endregion

    #region Create Users for Student, Teacher e Administrator Roles.

    var UserManager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(context));


    // Create a Student user and set it's role to Student
    if (!context.Users.Any(u => u.UserName == "John"))
    {
        var Student = new ApplicationUser() { UserName = "John" };
        var Result = UserManager.Create(Student, "123456");
    }
    if (!UserManager.FindByName("John").Roles.Any())
    {
        UserManager.AddToRole(UserManager.FindByName("John").Id, "Student");
    }


    // Create a Teacher user and set it's role to Teacher
    if (!context.Users.Any(u => u.UserName == "Arnold"))
    {
        var Teacher = new ApplicationUser() { UserName = "Arnold" };
        var Result = UserManager.Create(Teacher, "123456");
        UserManager.AddToRole(Teacher.Id, "Teacher");
    }
    if (!UserManager.FindByName("Arnold").Roles.Any())
    {
        UserManager.AddToRole(UserManager.FindByName("Arnold").Id, "Teacher");
    }


    // Create a Administrator user and set it's role to Administrator
    if (!context.Users.Any(u => u.UserName == "Caroline"))
    {
        var Administrator = new ApplicationUser() { UserName = "Caroline" };
        var Result = UserManager.Create(Administrator, "123456");
        UserManager.AddToRole(Administrator.Id, "Administrator");
    }
    if (!UserManager.FindByName("Caroline").Roles.Any())
    {
        UserManager.AddToRole(UserManager.FindByName("Caroline").Id, "Administrator");
    }

    #endregion
    }

这是因为混合了 ASP.NET Identity 和 ASP.NET Membership,并完成了以下操作:

<system.web>
    <roleManager enabled="true" />
</system.web>

您启用了会员资格SqlRoleProvider,它使用网站 \app_dir 文件夹中数据库中默认 SQL Express 实例中的角色存储。

如果你打开 machine.config,你会发现:

<connectionStrings>
  <add name="LocalSqlServer" 
    connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;
      AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true"
      providerName="System.Data.SqlClient"/>
</connectionStrings>
.
.
.
<roleManager>
  <providers>
    <add name="AspNetSqlRoleProvider" connectionStringName="LocalSqlServer" ...
</providers>
</roleManager>

您很可能没有安装 SQL Express,这就是您遇到超时和 SQL 异常的原因。

对于 ASP.NET Identity,请勿使用System.Web.Security.Roles(它是 ASP.NET 会员资格的一部分)但是使用Microsoft.AspNet.Identity.RoleManager反而。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法连接到数据库来执行身份功能 的相关文章

  • 下载使用 MVC5 选择的多个文件

    我正在 MVC5 中开发一个视图 如下所示 我需要选择表中的一条或多条记录 并能够下载数据库中以前保存的文件 我一直在寻找解决方案并做了多次测试 但我找不到解决方案 我试图从 javascript 将选定的代码发送到控制器并从中下载文档 但
  • 不使用 PIN 的 Twitter 身份验证

    我正在尝试验证 Windows Phone 中的用户帐户 我找到了这个 C 库来完成这项工作 tweetsharp 他们的示例非常清楚 但他们使用 pin 码来验证用户身份 using TweetSharp Pass your creden
  • 使用客户端凭据从 Azure AD 获取访问令牌以进行本机应用程序注册 (PowerBI)

    我使用后端应用程序中的 adal4j 版本 1 2 0 来获取访问令牌 以便能够使用 PowerBI REST API 嵌入报告 更具体地说 是GenerateToken 方法 我已在 Azure 中注册了一个本机应用程序 并为其提供了必要
  • 在 MVC 5 中,如何在单个 Ajax POST 请求中发送 ViewModel 和文件?

    我有一个 ASP NET MVC 5 应用程序 我正在尝试发送带有模型数据的 POST 请求 并且还包括用户选择的文件 这是我的 ViewModel 为了清晰起见进行了简化 public class Model public string
  • 这是一个合理的用户注册流程吗?

    我正在制定内部申请的注册流程 我的初步设计如下 我的主要问题是是否真的有必要包括registration confirmation code 它是保护应用程序免受现实威胁还是只是增加不必要的复杂性 对此我不确定 用户输入电子邮件地址 由于这
  • mifare 卡身份验证错误“6982:安全状态未满足”

    我有 pc sc 读卡器和非接触式卡 mifare 卡 我可以连接到该卡 并且我也成功执行 getdate 命令 但是当我想进行身份验证时 我看到此错误 6982 安全状态不满足 我已经尝试过这 3 个不同的身份验证命令 但所有这些命令都出
  • 如何使用 Laravel 5 检查用户是否已确认

    我正在尝试开箱即用地使用 Laravel 身份验证 身份验证不是问题 但我想检查用户是否已确认他的电子邮件地址 我如何让拥有Laravel检查表值是否confirmed值为 1 在 config auth php 我已经设置 driver
  • 如何检索使用 Apache 的 mod_ldap 进行身份验证的用户的用户信息?

    我使用 Apache 进行 LDAP 身份验证 现在我需要知道如何获取使用 PHP 登录的用户 有可能吗 我是否必须在 PHP 中进行身份验证才能存储用户名 如果您激活 mod authnz ldap 模块并按如下方式配置您的部分
  • couchdb读取身份验证

    我如何处理 couchdb 中的读取身份验证 我知道角色可以在单独的数据库中定义 但我想在文档级别实现读取身份验证 我正在考虑使用node js 但它似乎不是一个优雅的解决方案 因为couchdb也有一个http服务器 我不想再添加一个 或
  • 社交登录重复帐户冲突

    我正在制作一个新应用程序 除了常规电子邮件 密码注册之外 还需要多个社交注册 但是有一种特殊情况可能会导致数据完整性问题 例子 用户在 Facebook 上注册 但没有收到任何电子邮件回复 我在数据库中创建一个用户 将电子邮件和密码设置为
  • 自动将测试从 JUnit 3 迁移到 JUnit 4 的最佳方法?

    我有一堆 JUnit 3 类 它们扩展了 TestCase 并希望自动将它们迁移为带有注释的 JUnit4 测试 例如 Before After Test etc 有什么工具可以在大批量运行中执行此操作吗 在我看来 这并没有那么难 那么让我
  • Spring Security - 基于令牌的 API 身份验证和用户/密码身份验证

    我正在尝试创建一个主要使用 Spring 提供 REST API 的 Web 应用程序 并尝试配置安全方面 我正在尝试实现这种模式 https developers google com accounts docs MobileApps h
  • 迁移范围的独特性

    我一直在尝试找到一种方法来实现这一目标 但我找不到任何尝试 即使如此 我想也许我的方法是完全错误的 也就是说 我应该做什么移民如果我希望两个字段的组合是唯一的 请注意 我不希望它们成为索引 而只是数据库字段 例如 对于下面的迁移 我可以单独
  • 不需要 UserProvider 的自定义身份验证

    我在网上寻找适合我的配置的解决方案 但找不到满足我需求的东西 到目前为止 我已经为此工作了整整三天 但我无法使其正常工作 我确信有几件事我不明白 我正在分支 2 1 上开发我的 symfony 应用程序 为了让这个简短 我有一个网络服务 我
  • EF6 + Postgres 关系 dbo.AspNetUsers 不存在

    我一直在关注这篇关于使用 PostgreSQL 和 EF6 的文章http www jasoncavet com blog postgresql and entity framework 6 code first http www jaso
  • 如何在 PHP 中实现 Google OpenID 身份验证并在本地主机上测试

    我是 OpenID 新手 想在我的网站上实施 Google OpenID 身份验证 我找不到任何例子 任何人都可以建议我一些好的教程 一步一步 或任何带有代码的工作示例 以使用 PHP 实现 Google OpenID 身份验证 我建议使用
  • 如果我被冒充,为什么 Win32 API 函数 CredEnumerate() 会返回 ERROR_NOT_FOUND?

    我编写了一些示例代码 当我在普通用户帐户的上下文中从 Windows 命令提示符调用这些代码时 会使用 CredEnumerate 转储所有用户保存的凭据 但是 我真的希望能够从 SYSTEM 用户上下文执行此操作 因此我从 SYSTEM
  • 验证日期格式不起作用

    我在日期验证方面遇到问题 在我的视图中 我有一个 jQuery 日期选择器 我更改了格式yy mm dd to mm dd yy现在我收到客户端验证错误 例如 The value 02 25 2014 is not valid for Da
  • ASP.Net-Core 中的自定义身份验证

    我正在开发一个需要与现有用户数据库集成的网络应用程序 我仍然想使用 Authorize 属性 但我不想使用身份框架 如果我确实想使用身份框架 我会在startup cs文件中添加类似的内容 services AddIdentity
  • 想要在 highcharts/highstock 中用鼠标滚轮移动 y 轴滚动条

    参考我想用鼠标滚轮移动 y 轴滚动条的问题 有什么办法可以做到吗 yAxis scrollbar enabled true showFull false 更新代码 下面是我更新的代码 var chart1 new Highcharts Ch

随机推荐

  • 尝试在 webdriver.io 项目中打开 allure-reports 时出现异常 java.lang.UnsatisfiedLinkError

    我有一个小型 webdriver io 项目 只是为了第一次尝试它 我现在想添加诱惑报告 但是当我尝试运行时allure open我收到以下异常 但我不知道必须在哪里解决此问题 Starting web server 2021 05 04
  • Flutter 等效 Android-Toggle-Switch

    有任何像这样的扑动小部件吗这个图书馆 https github com BelkaLab Android Toggle Switch在 android java 中
  • XIB 文件在 XCode 中像 XML 一样打开,但使用 Interface Builder 可以正确打开

    当我在 Xcode 4 中双击 StartWindow xib 文件时 它不会在集成 Interface Builder 中打开 它像 XML 文件一样打开 我可以打开所有其他 xib 文件 它们会按预期显示 我可以通过 打开方式 使用旧的
  • Cython 优化

    我正在用 Python 编写一个相当大的模拟 并希望从 Cython 获得一些额外的性能 然而 对于下面的代码 我似乎没有得到那么多 即使它包含一个相当大的循环 大约 10 万次迭代 我是否犯了一些初学者错误 或者这个循环大小是否太小而无法
  • 尝试使用 Phantom.js 生成 PDF 时 Vue.js 未渲染

    在这个带有硬编码 url 的简单示例中 我的 Vue js 组件未渲染 纯 html 被渲染 但我有组件的所有位置都显示为空白 Phantomjs 应该能与 Vue js 正常工作吗 var webPage require webpage
  • 构建 Java Swing GUI 的最佳方法?

    到目前为止 我一直在使用 Netbeans Swing GUI 生成功能为我的 java 应用程序构建 GUI 现在我已经开始在我的项目中使用 Eclipse 并放弃了 Netbeans 那么除了手动编写 GUI 的所有代码之外 还有什么其
  • ios UICollectionView 单元格之间顶部/底部分离

    我有一个集合视图 工作正常 并且我调整了 X 填充的分离 而且效果很好 但对于单元格之间的 Y 填充 似乎没有调整为无分离 这是我的布局代码 UICollectionViewFlowLayout layoutItem UICollectio
  • 如何使用 slf4j 记录 postgres 驱动程序消息?

    我在我的网络应用程序中使用 postgres db 我在我的中添加了以下依赖项pom xml
  • AS3 - 我可以知道一个类是否实现了一个接口(或者是另一个类的子类)?

    有了这个代码 function someFunction classParam Class Boolean how to know if classParam implements some interface 即比较classParam
  • .NET 系统类型到 SqlDbType

    我一直在寻找 Net System Type 和 SqlDbType 之间的智能转换 我发现这是以下想法 private static SqlDbType TypeToSqlDbType Type t String name t Name
  • 如何生成与 java TimeZone 对应的良好时区下拉列表

    其他网络应用程序使用什么策略来生成格式良好的时区列表以满足用户偏好 我尝试获取所有时区 但列表很长 而且格式不适合用户 只是想知道其他人是如何做到这一点的 下面的代码片段 String ids TimeZone getAvailableID
  • 如何访问包含特殊字符的对象属性?

    我有一个formDOM 元素 var virDom document getElementsByTagName form 0 virDom有两个带 ID 的字段creditId and pwdId 我可以访问virDom creditId没
  • 表与临时表性能

    对于数百万条记录 哪个更快 永久表or临时表 我只需要将它用于 1500 万条记录 处理完成后 我们删除这些记录 在您的情况下 我们使用称为临时表的永久表 这是大量导入的常用方法 事实上 我们通常使用两个暂存表 一张包含原始数据 一张包含清
  • 如何获取用javascript加载的标签值

    我有一个这样的链接 它是从 Instagram api 获取的 http localhost 60785 access token aspx access token 43667613 4a1ee8c 791949d8f78b472d813
  • glBufferData() 的分段错误

    我不明白为什么这段代码会出现段错误 AxesMarker AxesMarker float size size size vbo vertices 0 vbo elements 0 Vertex vertices 6 Vertex Colo
  • 严格模式性能更高吗?

    一般来说 在浏览器中以 严格模式 执行 JavaScript 是否会提高性能 主流浏览器是否会进行额外的优化或使用任何其他技术来提高严格模式下的性能 稍微改一下 除了其他目标之外 严格模式是否旨在允许浏览器引入额外的优化或其他性能增强 除其
  • cakephp - 获取表名称及其列详细信息

    有谁知道如何从模型名称获取表名称 另外我想获取该模型 表名称的所有列名称及其类型 是否有可能获得给定型号名称的此类详细信息 Thanks 表名 要获取该表 请参阅 this gt Model gt table 或者检查类变量的模型 useT
  • geocomplete 不是使用自动完成的函数

    您好 我正在使用自动填充代码 收到错误 geocomplete 不是一个函数 如果在本地 单独的文件 中使用它 它对我有用 可能是什么错误 function location geocomplete alert gine details g
  • 如何知道 RecyclerView / LinearLayoutManager 是否滚动到顶部或底部?

    目前我正在使用以下代码来检查是否应启用 SwipeRefreshLayout private void laySwipeToggle if mRecyclerView getChildCount 0 mRecyclerView getChi
  • 无法连接到数据库来执行身份功能

    我使用 ASP NET MVC5 创建了一个新应用程序 使用个人用户帐户来确保安全性 并使用代码优先迁移来进行模型 数据库建模 所有选项均为默认 我想为其设置自定义用户和角色 所以我使用创建了一个种子RoleManager and User