gpt4 book ai didi

c# - 在 Microsoft.AspNet.Identity 中使用 UserManager 和 RoleManager;

转载 作者:太空狗 更新时间:2023-10-29 20:36:29 25 4
gpt4 key购买 nike

我以前用过这个,但我终究无法弄清楚哪里出了问题。

@using System.Data.Entity;
@using Microsoft.AspNet.Identity;
@using Microsoft.AspNet.Identity.EntityFramework;


using(ApplicationDbContext db = new ApplicationDbContext())
{
var rm = new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(new ApplicationDbContext()));
var um = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(new ApplicationDbContext()));

var user = User.Identity.GetUserId();

if(user != null)
{
string role = "Admin";
if (!rm.RoleExists(role))
{
var roleResult = rm.Create(new IdentityRole(role));
if (!roleResult.Succeeded) { //error stuff
};
}
if (!um.IsInRole(user, role))
{
um.AddToRole(user, role);
}
}
}

当我运行它时,我跳过了创建角色元素(因为我已经将它添加到数据库中),但是当它到达“是管理员角色中的用户”位时,该行 um.AddToRole(用户,角色)已运行,但随后我收到一条错误消息,指出我有违规行为,因为我正在尝试复制 key 。

我不明白为什么程序在调试时说“没有具有此名称的用户具有 Admin 角色”,而稍后当它尝试添加该角色时,我看到“嘿,该用户已经具有管理员角色,您无法再次添加它”

在我使用 RoleProviders 之前,我必须更改我的 web.config 并在其中添加信息,但我没有这样做,因为我不必这样做!?

这可能很简单,但我卡住了。

为清楚起见,如何检查当前登录的用户是否属于具有 AspNet.Identity 的角色“Admin”。

亲切的问候

最佳答案

好的,原来问题是关闭延迟加载导致了这个问题。我将 Microsoft Identity 更新为 2.0,但仍然没有任何乐趣。显然这是他们正在解决的一个已知错误。

不太理想,因为我总是关闭延迟加载。它不是大型应用程序,因此性能不是问题。只是为了让所有人都知道。

关于c# - 在 Microsoft.AspNet.Identity 中使用 UserManager 和 RoleManager;,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22816478/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com