问题标签 [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.
asp.net-core - 登录和注销后 MVC 6 中的后退按钮问题
我试图限制用户在登录/注销到应用程序后单击返回按钮。
如果用户登录到应用程序,则在单击后退按钮后不应显示登录视图,如果用户已从应用程序注销,则不应显示单击后退按钮注销视图。
我已经使用了以链接数量给出的缓存技术,但似乎它不起作用。
此CacheAfterLogout链接并按原样完成,但问题仍未解决。我正在使用 asp.net 身份框架。
有人可以帮忙吗?
c# - ASP.NET 5 Identity 3 用户在应用程序重新启动后注销
我们正在使用 ASP.NET Identity 3。
我们的用户会随机自动退出。为了重现这个问题,我尝试了重新启动应用程序,所有用户都退出了,即使是那些检查过Remember me
.
它只发生在生产环境中,在开发环境中运行良好。
更新:
我们只有一台服务器在生产中。
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。
讨论
我本可以保留“身份实体框架”包并保存自己复制“标准”命名空间的内容,但我选择不这样做,这样我可以使我的标识符保持简短和明确。
c# - AuthorizationHandler 和数据库依赖注入
我们开发了一个基于身份认证的多租户应用程序。每个用户都会获得一个存储在数据库中的令牌会话,以判断该用户是否仍处于连接状态(具有过期时间)。我将令牌(以及有关用户公司的其他信息)存储在 user 中Claim
。在 Identity 检测到用户仍然连接(或未连接)之后,我需要检查用户令牌在我们的数据库中是否仍然有效(但前提是他已连接),所以我实现了AuthorizationHandler
.
我像这样注册我的处理程序:
因为我们有一个多租户应用程序,当用户退出应用程序并重新打开站点时,他的连接字符串丢失了(我们不想持久化数据库字符串),所以我使用存储的信息Claim
来恢复数据库使用权。如果身份验证过期,则 中没有可用的信息Claim
,因此我无法访问我的数据库。
如我所见,TokenValidHandler
即使用户未连接也会被实例化,这正常吗?因为在他不是的情况下,并且我想对我的数据库服务使用依赖注入,所以我不能,因为有关用户数据库访问的信息不在这里:身份没有足够快地检测到用户身份验证过期。有什么想法吗?
asp.net - 是否有 UI 来管理与 ASP.NET 5 兼容的 ASP.NET 身份用户/角色?
我在用着:
- VS2015u2
- ASP.NET 5
- MVC 6
我正在寻找一些 UI 来管理用户/角色。
我尝试过的一些事情:
- Identity Manager - https://github.com/IdentityManager/IdentityManager 我猜它仍然与最新的 asp 更改不兼容。
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 条记录..这两者角色两次??
我做错了吗?该代码似乎可以创建两个角色,但也许我错过了什么?有任何想法吗?
asp.net-core - 身份 3 在 Internet Explorer 中不起作用
我在我们的 asp.net 核心应用程序中遇到了 Identity 3 的问题。我们使用“标准”登录:
结果是好的,并且在浏览器中设置了 cookie,并且一切看起来都是正确的,但是对于 Internet Explorer,授权在对应用程序的调用之后不起作用,用户再次被重定向到登录页面。在 Chrome 中它工作正常。
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 的用户?必须有一种优雅的方式来返回用户?
c# - 策略中的 HttpContext 错误
我们使用自定义策略来检查一些数据库要求(数据库中持久化的令牌),并且我需要会话信息,因此我注入了 IHttpContextAccessor 以使用 HttpContext.Session。
我理解了 :
- 我没有正确检索 HttpContext.Session,它抛出 InvalidOperationException
- 请求不正确:路径为空,应该类似于“/Home/Index”
我在我的项目中重新使用了 SessionMiddleware,我可以看到用户会话已正确恢复到 HttpContext 中,但在我的策略中我会得到错误的会话。在 MVC 中间件之前正确添加了 SessionMiddleware。有任何想法吗 ?
解决方案(感谢@JoeAudette)保留访问器,直到您需要 HttpContext。