Ing*_*mar 1 ef-code-first asp.net-identity
我正在使用ASP.NET Identity 2.0和EF 6.1.1构建MVC5应用程序.
这是我当前的Login方法的一部分:
[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
Run Code Online (Sandbox Code Playgroud)
这个工作正常,直到我点击UserManager.IsInRole().这总是返回false.
在某处我读到IsInRole()如果相应的用户没有登录就会失败.但是因为我传递了SignInManager.PasswordSignInAsync(),我相信这应该没问题.
是的,我已经多次检查数据库并且非常小心;)我的测试用户和我的测试角色"OfficeUser"肯定是相互分配的.
有人有想法吗?
我有同样的问题,然后我得到了如下工作.原因似乎是,用户在此阶段没有完全登录或完成所有身份验证过程.
case SignInStatus.Success:
{
var user = await UserManager.FindAsync(model.UserName, model.Password);
var roles = await UserManager.GetRolesAsync(user.Id)
if (user == null)
break;
if (roles.Contains("OfficeUser"))
break; // << I always hit this line - even if the user is an OfficeUser
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1253 次 |
| 最近记录: |