问题标签 [usermanager]
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.
c# - DBContext更改后如何在控制器内创建新的UserManager对象
在控制器中使用新的 connectionString 进行更改后,我希望有一个刷新的 UserManager 对象DbContext
,我已经在控制器中注入了该对象UserManager
,但很明显,它将始终具有DbContext
来自 DI 的最后一个引用,而不是新创建的dbcontext
.
我已经尝试过如下。
它工作正常,但缺少大部分UserManager
功能,比如
_userManager.CheckPasswordAsync(user, loginModel.Password)
我将大部分参数作为 null 传递。我应该怎么做才能以最简单的方式完全UserManger
使用 new DbContext
?
asp.net - 如何通过 ASP.NET Core 中的 api 控制器更新 IdentityUser 的自定义属性?
所以我正在研究一个 api 控制器,我有一个这样的更新方法:
通过 api 调用更新用户时,除了地址之外,用户都会得到更新。
这是地址:
和更新模型:
我已经完成了适当的迁移,并尝试在用户变量上设置断点。在调用 updateAsync 之前,该变量确实保存了一个地址。
用户的名字和姓氏都在 POST 请求中得到更新,但地址仍然为空。
有谁知道为什么会发生这种情况?
asynchronous - 如何在请求后使 IdentityDbContext 保持活动状态,以便服务可以使用 UserManager 完成其任务?
从一个页面我调用这样的服务:
我希望 Page() 返回并让用户/用户界面继续前进,同时该服务在后台使用 UserManager 添加许多用户。问题是一旦 Page() 返回并且请求完成,IdentityDbContext 就会关闭并且 UserManager 不再起作用。请求完成后如何保持 UserManager 工作?
该服务使用标准依赖注入:
如果我使用 await 而不是 discard 并强制服务在页面加载之前完成,它工作正常;但是,如果用户需要等待 2 分钟才能在页面加载之前导入数千个用户,这将是糟糕的 UX。我的问题是没有创建存储过程并复制 UserManager 正在做的事情,有没有办法在其中使用 UserManager不依赖于请求生命周期的服务?
我的想法是创建一个新的 UserManager 实例,而不是依赖依赖注入中的实例,但到目前为止我还无法让它工作。不确定语法是什么,也找不到在 .net core 3.1 中实际工作的示例
如何在请求后使 IdentityDbContext 保持活动状态,以便服务可以使用 UserManager 完成其任务?(.Net Core 3.1)
.net - 仅在使用断点进行调试时,用户管理器“在此上下文上启动了第二个操作”错误
这让我把头发拉出来。任何帮助将不胜感激。
我在 .NET 框架 4.6.1 中运行 MVC(我相信是 5)应用程序。我正在使用身份验证。大约一年前,我在我的旧电脑上创建了这个网站。在过去的一年里,我断断续续地研究它,从来没有遇到过这个问题。然后最近,我买了一台新笔记本电脑,从 GitHub 克隆了项目,突然间我遇到了这个奇怪的问题,在我调试和单步执行调用它的某个地方时,UserManager 会给我这个“第二次操作”错误,哪个在我的网站上有很多地方。它从来没有在我的旧机器上对我这样做过,所以我不知道是否需要更改设置,或者我是否偶然错过了旧机器上的一些代码,尽管这似乎不太可能。
我以默认方式设置了我的 UserManager,它将它创建为 OwinContext 的一部分。
正如你所看到的,这都是非常标准的,至少据我所知。自从 Visual Studio 创建它以来,我什至认为我从未对这段代码进行过任何重大修改。
当它被调用时,概念是我的父控制器有一个 AppUser 属性,这样我就可以获得关于当前用户的任何信息,我需要进行数据存储调用。为了得到这个 AppUser,我调用了 UserManager 和 FindByName。
然后我在下面的示例中调用该 AppUser:
上面的例子只是众多例子之一。这与这个特定实例无关。我可以选择网站中的任何地方,几乎。所以让我遇到这个“第二次操作”错误的原因之一是我什至没有调用异步版本的调用。可以说我应该,但我不是,但我仍然得到这个错误。因此,最重要的是,在使用 localhost 在调试模式下运行站点时,我没有收到此错误。我可以在网站上进行我需要的任何操作,而且我没有遇到任何问题。但是在随机的时候,如果我在调试时有一个断点并且我正在单步执行,我的操作会失败并且我会得到这个“第二次操作”异常,这在我的旧计算机上从未发生过一次。我可以停止实例并重新启动它,它会立即给我这个错误,就像它一样' 即使 IIS Express 没有在任务栏中运行,s 仍然保留旧实例。通常,我通过重新启动实例几次或休息 10 分钟然后重新启动来停止它。但可以肯定的是,如果我通过进行该调用的断点进行调试,错误就会回来。
有什么想法或愚蠢的帽子可以给我吗?
asp.net-core - 初始化用户管理器在类库项目中
我有一个 ASP.NET Core 5.0 MVC 应用程序和一个名为 .NET 5.0 的类库Application.Data
。由于关注点分离,我决定DbContext
应该将迁移和迁移包含在数据库中。DDL 迁移工作完美,但我在AspNetCore.Identity
从数据库中播种用户时遇到问题。
简单地说,我想访问一个UserManager<MyUser>
实例以调用CreateAsync
/AddToRoleAsync
方法,但UserManager
构造函数需要八个参数,然后也需要实例化。我的理解是,我可以使用该AddIdentity
方法将用户管理器注入到我的 MVC 项目的服务集合中,但由于我DbContext
包含在 中Application.Data
,我将无法从 MVC 项目中运行迁移命令。
这里最好的做法是什么?
authentication - 在 ASP.NET Core 中使用基于本地存储的 JWT-Token 更改用户密码(ASP.Identity)
美好的一天,我是一名 C# 开发人员,正在尝试使用 ASP.NET Core 迈出第一步。
现在我正处于需要一些外部帮助的地步。我开发了一个基于 Blazor 的网站并将一些用户添加到我的数据库中。现在我想为登录用户添加一个更改密码的功能。我的项目分为服务器端和客户端。客户端包含我所有的 blazor/razor 页面,包括 ChangePasswordView,服务器端接收来自客户端的 REST 请求。
对于授权,我正在使用 JWT(JSON WebToken),并且我将此令牌与一些声明添加到浏览器中的本地存储中。
程序如下:
- 用户已登录
- 用户输入旧密码和新密码并点击提交按钮
- 请求功能从客户端到服务器端
ChangePassword(ChangePasswordModel pwModel)
POST 请求到达包含“ ”方法的服务器端 UserController 类。它成功接收到带有旧密码和新密码的 pwModel。- ....现在我遇到了一些问题....我想我必须从本地 browserstorage 或类似的东西验证 JWTtoken,因为它
_userManager.GetUserAsync(User)
总是返回 null。
如何帮助我解决此问题以获得功能齐全的“changePassword”方法以及您需要哪些信息?
最好的问候,拉里
ps 抱歉,这是我在 Stackoverflow 上的第一个问题,我试图尽可能地描述这个问题。
c# - ASP.NET Core Identity userManager.AddToRoleAsync() - 按 id 添加
我有一个自定义用户角色类CompanyId
作为外键。所以我可以创建与公司相关的用户角色。这意味着管理员角色或任何其他角色本身可以在多个公司中。我不能与公司和角色建立多对多关系,因为管理员对一家公司的要求可能因另一家公司而异。所以我在用户角色实体中添加了公司 ID。
我的问题是,用户管理器将角色名称作为参数AddToRoleAsync()
,我不能使用它,因为角色名称可能是多余的。如果我能够通过 ID 添加用户角色,那就太好了。是否有解决方法来实现这一目标?
我目前的解决方法是将公司名称添加为角色名称的前缀。喜欢:ABC - 管理员;XYZ - 管理员。我不太喜欢这个,用户也不会。
如果我可以为两者创建一个重载方法AddToRoleAsync()
并IsInRoleAync()
通过其 ID 而不是名称来查找角色,那就太好了。
asp.net-core - ASP.NET Core 3.1,InvalidOperationException 在使用注入到作用域服务中的用户管理器时,然后注入到 SignalR 集线器
我有一个服务 WhoKnows<THub> 在 Startup.cs 中注册为
该服务通过 UserManager 注入,如下所示:
然后在一个方法中调用它:
然后将服务作为依赖项注入 SignalR Hub
但是,当 _userManager.FindByIdAsync(UserId) 被调用时,它会抛出一个
System.InvalidOperationException:无效操作。连接已关闭。
我想这与 UserManager 的作用域生命周期有关?
如何使用 Injected UserManager?
android - Android:检查当前用户是否是客人
我通读了 UserManager 和 UserHandle 文档,找不到任何可以返回布尔值回答问题的方法。任何人都知道如何确定这一点?