2014-12-27 58 views
3

我已將幾個自定義列添加到身份2的AspNetUsers表。我正在使用MVC5與C#。有幾列包含對網站處理用戶很重要的數據,並且有一個允許用戶更改這些設置的設置頁面。爲當前會話刷新經過身份驗證的用戶個人資料數據的最簡單方法

目前,如果設置被更改,用戶必須手動註銷並重新登錄才能使更改生效,這被證明是不可取的。

什麼是刷新當前會話的用戶配置文件最直接的方式?如果這需要註銷/登錄才能生效,那麼如何使用Identity 2來編碼呢? AccountController中不包含幾頁,我不確定如何訪問AccountController中的ApplicationUserManager和ApplicationSignInManager。在AccountController之外複製這些對象似乎不正確,也許這是可以接受的?

回答

3

如果唯一可以更改這些設置的人是用戶本身,則可以在修改這些設置時自動爲該用戶執行SignOutSignIn。基本上,這全部由SignInManager.SignInAsync法進行

用戶修改它的設置,你可以這樣做後:

var user = await UserManager.FindByIdAsync(User.Identity.GetUserId()); 
if (user != null) 
{ 
    await SignInManager.SignInAsync(user, isPersistent: false, rememberBrowser: false); 
} 

幾頁不包含在的AccountController,我不知道如何訪問AccountController中的ApplicationUserManager和ApplicationSignInManager。在AccountController之外複製這些對象似乎不正確,也許這是可以接受的?

在使用AccountControllerApplicationUserManagerApplicationSignInManager外面我認爲是不是一個好主意。如果你被迫這樣做有可能是您的應用architecture.If您正在使用的帳戶控制器有問題,應該是負責爲用戶帳戶處理(單一職責原則)

+0

不要用「同意所有功能使用AccountController之外的* Manager類「 - 考慮管理員管理用戶帳戶的情況。但是,重新登錄帳戶更改的用戶是一團糟。 – trailmax 2014-12-27 22:41:38

+0

@AlexArt我同意您在AccountController之外使用ApplicationUserManager和ApplicationSignInManager的意見。我認爲我理解登出/登錄程序的最大問題是我會獲取用戶密碼的地方。你的例子沒有指定一個能夠解決我的問題的密碼。感謝您對此和簡單代碼的意見。我可能可以爲我的目的做這項工作。 – rwkiii 2014-12-27 23:18:44

相關問題