1
我正在用ASP.NET Identity 2.0和EF 6.1.1构建一个MVC5应用程序。为什么IsInRole总是返回false?
这是我当前的登录方法的一部分:
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Login(LoginViewModel model, string returnUrl)
{
if (!ModelState.IsValid)
return View(model);
var result = await SignInManager.PasswordSignInAsync(model.UserName, model.Password, model.RememberMe, shouldLockout: true);
switch (result)
{
case SignInStatus.Success:
{
var user = await UserManager.FindAsync(model.UserName, model.Password);
if (user == null)
break;
if (!UserManager.IsInRole(user.Id, "OfficeUser"))
break; // << I always hit this line - even if the user is an OfficeUser
这工作得很好,直到我打UserManager.IsInRole()。这总是返回false。
某处我读到IsInRole()会失败,如果相应的用户没有登录。但是因为我通过SignInManager.PasswordSignInAsync()我相信这应该没问题。
是的,我已经多次检查数据库,并且非常仔细;)我的测试用户和我的测试角色“OfficeUser”明确地分配给对方。
有没有人有想法?
是的,这是行得通的。非常感谢,DSR!你刚刚救了我的一天(和周末:)) – Ingmar 2014-10-10 09:37:27