.Net MVC Identity 2自定义用户存储HttpContext.Curent为null

时间:2014-09-28 01:34:48

标签: .net asp.net-mvc asynchronous asp.net-identity httpcontext

我有IUserStore的自定义实现,因为我想使用我的存储库层。我的所有数据库表都存储了插入或最后更新行的用户名。我从HttpContext.Current获取用户名,这很有效,除非通过UserManager调用存储库,我在HttpContext.Current中得到null。当我自己的业务层调用存储库时,一切运行良好。 (我使用的是方法的异步版本。)

让任何人知道UserManager中发生了什么,为什么会丢失当前的httpcontext?

我从帐户控制器调用用户服务:

var ir = await UserService.ChangePasswordAsync(User.Identity, vm.Password);

用户服务使用UserManager类保存新密码:

var ir = await Manager.PasswordValidator.ValidateAsync(password);
if (!ir.Succeeded)
    return ir;

user.PasswordHash = Manager.PasswordHasher.HashPassword(password);
ir = await Manager.UpdateAsync(user);

UserManager使用我自己的UserStore实现:

public Task UpdateAsync(UserEntity user)
{
    return UserRepo.UpdateAsync(user);
}

这里,当我用调试器停止程序时,在HttpContext.Current中我有null。这是一个问题,因为用户存储库试图获得当前的用户名。

1 个答案:

答案 0 :(得分:0)

您可以通过将对象[HttpContextBase context]注入到类的构造函数中来获取此问题,并在context.User对象中获取用户相关信息

相关问题