2014-04-22 39 views
1

我有一個與公司表相關的用戶表,它們之間的關係分別是多對一。用戶表很快就有了CompanyID。如何查看用戶登錄的額外信息?

當用戶登錄時,我需要經常檢查CompanyID他,但User.Identity我只能訪問該名稱。

什麼是從登錄用戶獲取CompanyID的最佳方式?

我目前使用簡單會員。

回答

1

身份不是來自數據庫,所以它不會有所有的信息。好消息是,使用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()來調用此。

+0

我目前使用簡單會員。我不能使用UserManager 只有Equals和ReferenceEquals方法。如何提供User.Identity.GetUserId()?最好的方法是這樣嗎?我想知道你是否有辦法做User.Identity.CompanyID。 – weldsonandrade

+0

@weldsonandrade您可能應該以不同的方式標記您的帖子,但請參閱我的編輯。 – Casey

+0

對不起,我只是改變目標。謝謝。 – weldsonandrade