问题标签 [asp.net-identity-3]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
1660 浏览

asp.net-core - 登录和注销后 MVC 6 中的后退按钮问题

我试图限制用户在登录/注销到应用程序后单击返回按钮。

如果用户登录到应用程序,则在单击后退按钮后不应显示登录视图,如果用户已从应用程序注销,则不应显示单击后退按钮注销视图。

我已经使用了以链接数量给出的缓存技术,但似乎它不起作用。

CacheAfterLogout链接并按原样完成,但问题仍未解决。我正在使用 asp.net 身份框架。

有人可以帮忙吗?

0 投票
2 回答
295 浏览

c# - ASP.NET 5 Identity 3 用户在应用程序重新启动后注销

我们正在使用 ASP.NET Identity 3。

我们的用户会随机自动退出。为了重现这个问题,我尝试了重新启动应用程序,所有用户都退出了,即使是那些检查过Remember me.

它只发生在生产环境中,在开发环境中运行良好。

更新:

我们只有一台服务器在生产中。

0 投票
2 回答
3983 浏览

asp.net-core - 在 ASP.NET Core MVC6 中更改 Identity 3.0 表名不起作用

  1. 提出了同样的问题,但 12 天后仍未得到回答......

  2. 我看过这个使用“ToTable”作为问题的更新。

  3. 我看过这个似乎已经过时了。

我想更改标识 3.0 表的表名 - ASP.NET Core。

到目前为止,使用“ToTable”选项(上面的第 2 项)更新,我已经设法破坏了我的锁定文件并因此破坏了项目。第三个选项已过时。

我创建了一个 vanilla 项目 - 刚刚通过 VS2015 使用身份 3.0 创建的没有任何更改

然后我尝试了这个:

然后我检查了更新的迁移以查看表名是否已更改并且它们没有更改。

我目前正在使用 1.0.0-rc1-update2 。

如何更改这些表的名称?

0 投票
1 回答
6304 浏览

c# - 在 ASP.NET 5 中使用自定义 UserStore 和 RoleStore

我已经为使用 ASP.NET 5、MVC 6、EF 7 和 Identity 3 的项目实现了自定义 RoleStore 和自定义 UserStore。但是 - 我不太清楚如何配置身份以使用我的自定义 RoleStore 和自定义 UserStore 而不是通常的产品。如何重新配置​​系统以使用我的自定义类?

PS:我也有自定义用户和角色类。

解决方案

这就是我最终做的事情。首先,我从我的项目中卸载了“身份实体框架”包。这导致一些东西丢失,所以我重新实现了它们(阅读:从这里复制它们),并将它们放在“标准”命名空间中以表明它们没有被定制。我现在有一个“安全”命名空间,其中包含以下内容:

  • 标准
    • 身份角色.cs
    • IdentityRoleClaim.cs
    • 身份用户.cs
    • IdentityUserClaim.cs
    • IdentityUserLogin.cs
    • 身份用户角色.cs
  • BuilderExtensions.cs
  • IdentityDbContext.cs
  • 资源.resx
  • 角色.cs
  • 角色存储.cs
  • 用户.cs
  • 用户存储.cs

粗体显示的项目包含项目特定的功能。

允许我使用自定义商店的代码位于“BuilderExtensions”文件中,该文件包含以下类:

然后,这允许我在 Startup.cs 文件中编写以下内容:

并且将使用自定义商店。请注意,PrimaryContext 是我的整个项目 DbContext 的名称。它继承自 IdentityDbContext。

讨论

我本可以保留“身份实体框架”包并保存自己复制“标准”命名空间的内容,但我选择不这样做,这样我可以使我的标识符保持简短和明确。

0 投票
1 回答
3025 浏览

c# - AuthorizationHandler 和数据库依赖注入

我们开发了一个基于身份认证的多租户应用程序。每个用户都会获得一个存储在数据库中的令牌会话,以判断该用户是否仍处于连接状态(具有过期时间)。我将令牌(以及有关用户公司的其他信息)存储在 user 中Claim。在 Identity 检测到用户仍然连接(或未连接)之后,我需要检查用户令牌在我们的数据库中是否仍然有效(但前提是他已连接),所以我实现了AuthorizationHandler.

我像这样注册我的处理程序:

因为我们有一个多租户应用程序,当用户退出应用程序并重新打开站点时,他的连接字符串丢失了(我们不想持久化数据库字符串),所以我使用存储的信息Claim来恢复数据库使用权。如果身份验证过期,则 中没有可用的信息Claim,因此我无法访问我的数据库。

如我所见,TokenValidHandler即使用户未连接也会被实例化,这正常吗?因为在他不是的情况下,并且我想对我的数据库服务使用依赖注入,所以我不能,因为有关用户数据库访问的信息不在这里:身份没有足够快地检测到用户身份验证过期。有什么想法吗?

0 投票
3 回答
7849 浏览

asp.net - 是否有 UI 来管理与 ASP.NET 5 兼容的 ASP.NET 身份用户/角色?

我在用着:

  • VS2015u2
  • ASP.NET 5
  • MVC 6

我正在寻找一些 UI 来管理用户/角色。

我尝试过的一些事情:

0 投票
1 回答
302 浏览

asp.net-core - asp.net core mvc6 播种角色在重复数据库创建时产生不同的结果

我使用带有整数 ids的 Identity 3.0 播种得到了奇怪的结果。我正在播种角色 - 只有两个 - 使用这个:

}

这是我从github 上的Unicorn 示例中获得的。

角色如下,带有一个名为 Description 的额外字段:

在我的启动中,我在 configure() 方法中有这个:

我已将项目配置为通过 Startup.cs 重新创建数据库,使用:

如果数据库不存在,则在启动时创建数据库......很好 - 它可以工作。

现在,当我检查角色时,我要么只获得第二个角色,要么获得两个角色两次.. 4 条记录.. 或者,很少只有两条记录,这就是它的假设。

我试图检查方法中的角色,并在添加角色之前检查是否有任何角色。

我已经删除了表的内容,所以所有行并再次运行它,我只得到了 ID 为“2”的第二个角色......它的 ID 是两个似乎没问题,但为什么只有一条记录?

删除数据库并重新运行项目,现在它具有第二个角色,ID 为“1”......但仍然只有一条记录。

重写了该方法以更接近Unicorn 示例,认为这可能是我编写该方法的方式..

我第一次运行它时效果很好..删除了数据库并再次运行它..仅保存了第二条记录..然后我再次删除了数据库并第三次运行它并获得了 4 条记录..这两者角色两次??

我做错了吗?该代码似乎可以创建两个角色,但也许我错过了什么?有任何想法吗?

0 投票
1 回答
568 浏览

asp.net-core - 身份 3 在 Internet Explorer 中不起作用

我在我们的 asp.net 核心应用程序中遇到了 Identity 3 的问题。我们使用“标准”登录:

结果是好的,并且在浏览器中设置了 cookie,并且一切看起来都是正确的,但是对于 Internet Explorer,授权在对应用程序的调用之后不起作用,用户再次被重定向到登录页面。在 Chrome 中它工作正常。

0 投票
2 回答
2990 浏览

asp.net-core-mvc - Identity 3.0 当 id 为“int”时通过 id 获取用户

我环顾四周寻找有关 Identity 3.0 的答案,但几乎没有发现有关获取具有 int id 的单个用户的信息。

我有一个 asp.net-core mvc6 项目,在该项目中,我已将所有具有字符串 id 的用户和角色转换为具有整数 id。

美好的。这样可行。我有一个 UserAdminController,其中包含一个更新或编辑操作,它传递了一个“int?” 为身份证。

在我的服务中,我想让用户与整数 id...“1”相关联。

我想使用 UserManger.FindByIdAsync(id) 来获取具有该 ID 的用户。

问题是,这需要一个“字符串”id 而不是“int”id。

使用 UserManger(如果可以的话)如何返回带有整数而不是字符串 id 的用户?必须有一种优雅的方式来返回用户?

0 投票
1 回答
239 浏览

c# - 策略中的 HttpContext 错误

我们使用自定义策略来检查一些数据库要求(数据库中持久化的令牌),并且我需要会话信息,因此我注入了 IHttpContextAccessor 以使用 HttpContext.Session。

我理解了 :

  1. 我没有正确检索 HttpContext.Session,它抛出 InvalidOperationException
  2. 请求不正确:路径为空,应该类似于“/Home/Index”

我在我的项目中重新使用了 SessionMiddleware,我可以看到用户会话已正确恢复到 HttpContext 中,但在我的策略中我会得到错误的会话。在 MVC 中间件之前正确添加了 SessionMiddleware。有任何想法吗 ?

解决方案(感谢@JoeAudette)保留访问器,直到您需要 HttpContext。