2016-10-21 35 views
0

因此,我已將默認用戶類擴展爲;如何使用Microsoft.AspNet身份跟蹤用戶上次活動時間

[Serializable] 
public class AUser : IdentityUser<int, AUserLogin, AUserRole, AUserClaim>, IUser , IXmlSerializable 
{ 
    public virtual DateTime LastActivity { get; set; } 
    ... 
    ... 
} 

而且我有一個方法來更新用戶活動

public async void UpdateUserActivity(string userName) 
{ 
    var user = _userManager.FindByName(userName); 
    user.LastActivity = DateTime.UtcNow; 
    await _userManager.UpdateAsync(user); 
} 

我的目的是跟蹤用戶的最後活動時間。到上次活動時間,我的意思是用戶最後一次對應用程序執行任何操作。

我打算在每個請求執行後調用update方法。但是,這意味着對每個請求執行數據庫更新。這對我來說聽起來很貴。

問題:我應該在哪裏調用它?有沒有更好的方法來跟蹤用戶上次的活動?

問候,

回答

0

您可以使用OnActionExecuted事件控制器裏面來跟蹤用戶活動和寫入活動日誌爲所有用戶使用到的HttpContext.Application應用廣泛的對象。爲了使流量保持較低的數據量,您可以實現一個全局後臺線程,該線程讀取本地存儲的活動數據,並在固定時間(例如每分鐘一次)後將其寫入youir數據庫。

您將擁有較少的數據庫流量,但活動數據不會100%保持最新。取決於你的數據庫更新週期。

+0

聽起來更好的解決方案。將這樣做。謝謝。 –