我有一個與公司表相關的用戶表,它們之間的關係分別是多對一。用戶表很快就有了CompanyID。如何查看用戶登錄的額外信息?
當用戶登錄時,我需要經常檢查CompanyID他,但User.Identity我只能訪問該名稱。
什麼是從登錄用戶獲取CompanyID的最佳方式?
我目前使用簡單會員。
我有一個與公司表相關的用戶表,它們之間的關係分別是多對一。用戶表很快就有了CompanyID。如何查看用戶登錄的額外信息?
當用戶登錄時,我需要經常檢查CompanyID他,但User.Identity我只能訪問該名稱。
什麼是從登錄用戶獲取CompanyID的最佳方式?
我目前使用簡單會員。
身份不是來自數據庫,所以它不會有所有的信息。好消息是,使用ID,很容易找到用戶的完整記錄。使用UserManager<TUser>.FindByIdAsync()
並將其作爲User.Identity.GetUserId()
的結果。如果你願意,還有一個FindByNameAsync()
方法。
編輯:這篇文章最初是標記爲ASP.NET身份,所以我認爲你使用ASP.NET身份,它使用UserManager類。在這種情況下,您可能沒有GetUserId()。無論如何,原則是一樣的,即使你想,就像你在評論中所說的那樣,從User.Identity中訪問事物。爲IIdentity編寫一個擴展方法,使用您的數據庫,並在用戶表中搜索用戶名與您擁有的用戶名相匹配的用戶。可能看起來像這樣:
public static int GetCompanyId(this IIdentity identity)
{
using (var context = new ApplicationDbContext())
{
return context.Users.Single(u => u.UserName == identity.GetUserName()).CompanyId;
}
}
然後,您可以通過使用User.Identity.GetCompanyId()
來調用此。
我目前使用簡單會員。我不能使用UserManager只有Equals和ReferenceEquals方法。如何提供User.Identity.GetUserId()?最好的方法是這樣嗎?我想知道你是否有辦法做User.Identity.CompanyID。 –
weldsonandrade
@weldsonandrade您可能應該以不同的方式標記您的帖子,但請參閱我的編輯。 – Casey
對不起,我只是改變目標。謝謝。 – weldsonandrade