2014-09-28 17 views
0

我有一個IUserStore的自定義實現,因爲我想使用我的存儲庫層。我所有的數據庫表都存儲插入或最後更新行的用戶名。我從HttpContext.Current獲取用戶名,除非在通過UserManager調用存儲庫時,我可以在HttpContext.Current中獲得null。當我自己的業務層調用存儲庫時,一切正常。 (我正在使用異步版本的方法。).Net MVC Identity 2定製用戶存儲HttpContext.Curent爲空

有沒有人知道在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。這是一個問題,因爲用戶存儲庫嘗試獲取用戶名。

+0

你爲什麼不獲取當前登錄的用戶使用:用戶.Identity.Name? – MRFerocius 2014-09-28 15:45:23

+0

用戶屬性在mvc的基礎控制器中定義,因此它只能從控制器訪問。 – 2014-09-28 18:12:10

+1

你能提供一些代碼嗎? – MRFerocius 2014-09-28 21:51:24

回答

0

您可以通過注入對象[HttpContextBase背景]爲你的類的構造器解決了這一問題,並獲取context.User對象內的用戶相關信息

+0

對不起,我不明白你的意思。你能否更詳細的epxlain?同時我爲我的問題添加了一些代碼。 – 2014-10-12 14:35:32

相關問題