我完全坚持这一点,我创建了一个操作,使用身份框架将新的身份角色添加到我的数据库中。不幸的是,无论何时执行,它都会返回失败,在我插入断点后,我确定我将 null 作为值传递给newRole
而不是像预期的那样传递超级管理员。
以下是我正在使用的 URL,与我使用的完全一样:
https://localhost:44344/account/addrole/superadmin
这是相应的操作:
[Authorize(Roles = RoleNames.CanAddUsers)]
public ActionResult AddRole(string newRole)
{
var roleStore = new RoleStore<IdentityRole>(new ApplicationDbContext());
var roleManager = new RoleManager<IdentityRole>(roleStore);
var result = roleManager.Create(new IdentityRole(newRole));
return result.Succeeded
? Content(newRole + " added to database.")
: Content("Failed to add " + newRole + ".");
}
现在我已经检查并仔细检查了我在测试时登录的用户是否具有角色 CanAddUsers 并且我没有被重定向到登录而是只是接收 Failed to add .
为了确认,以下是我的路线,我找不到任何其他内容表明我的代码可能以不同的方式路由。
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
我确信此时这可能是一个非常明显的错误,但我找不到它!
如果您只想使用 MapRoute,那么您应该知道id
将使用可选参数的名称(在您的情况下)。
然后,您应该将 Action 的参数重命名为id
,或者newRole
通过编写addrole?newRole=superadmin
.
否则,正如其他人指出的那样,您可能更喜欢为此使用 POST 而不是 GET。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句