我有一個使用ASP.NET身份的MVC網站。該網站可用於多個客戶數據,並且每個客戶都獨立於另一個客戶,不應共享數據。每次交易僅在選擇客戶時纔會發生在客戶數據上。MVC個人用戶帳戶登錄值持續
但是,登錄用戶可以看到所有客戶,他們只是在登錄時選擇要處理的客戶。
因此,登錄後,他們將從Dropdown中選擇他們的客戶,然後查看客戶可以爲該客戶完成的所有客戶項目,個人信息和獨特的事情。
因此,例如
var allItems = from a in db.Items where a.CustomerId = customerId select a;
該客戶ID登錄時可得,爲什麼用戶從下拉選擇。但是,如何在整個用戶登錄會話中堅持這一選擇?我顯然不想將它保存到數據庫中,因爲它不是一個永久的選擇,我希望在註銷時選擇不再存在,讓他們可以自由選擇另一個客戶下次登錄。
另一個很酷的事情是能夠覆蓋get方法中的DbContext中檢索只有匹配的項目無論客戶ID選擇在登錄
public DbSet<Item> ItemsAll { get; set; }
public IQueryable<Item> Items
{
get
{
return ItemsAll.Where(x => x.Customer == myLoggedInCustomerChoice);
}
}
請原諒我,如果我沒有看到會話變量之間的連接,以及客戶端如何跟蹤登錄,但會話變量有超時,那麼登錄也是如此。他們可以不一樣嗎?含義會話變量可能在用戶登錄之前失效。如果用戶單擊「記住我」 – MichaelMcCabe
會話超時和登錄超時是不同的,但您可以通過在兩者上設置正確的設置來管理此事件。 (在這裏閱讀更多:http://stackoverflow.com/questions/17812994/forms-authentication-timeout-vs-sessionstate-timeout)。但這裏沒有魔法。要麼你必須「永久」地將選擇存儲在某個地方(即數據庫,cookie,本地存儲等),要麼必須考慮到客戶的選擇可能需要再次選擇。如果他們有一個「記住」的勾號,你仍然可以自動登錄他們,但他們必須選擇他們想看到的客戶。 – andreasnico