我不知道是否SimpleMembership保持UserId某處,或者如果不,如何強制它保留,一旦派生數據。我可以在User.Identity中保留UserId嗎? MVC4 SimpleMembership
我有簡單的動作:
[Authorize(Roles="User")]
public ActionResult Create()
{
var ownerId = WebSecurity.GetUserId(User.Identity.Name);
return View()
}
而且我MiniProfiler說:
DECLARE @0 nvarchar(4) = N'NICK'
SELECT [UserId] FROM [UserProfile] WHERE (UPPER([UserName]) = @0)
DECLARE @0 int = 2
SELECT r.RoleName FROM webpages_UsersInRoles u, webpages_Roles r Where
(u.UserId = @0 and u.RoleId = r.RoleId) GROUP BY RoleName
DECLARE @0 nvarchar(4) = N'NICK'
SELECT [UserId] FROM [UserProfile] WHERE (UPPER([UserName]) = @0)
的用戶ID所以,我重複查詢 - 率先拿到角色,第二致電WebSecurity.GetUserId(User.Identity.Name);
。調用[Authorize]之後,有沒有一種聰明的方法可以將UserId保存在某個地方?
因此,如果我理解正確,在您的應用中仍有重複的查詢,但僅在登錄操作之後。您是否使用WebSecurity.Login()登錄? – user1838937
檢查我的編輯,看看是否有幫助。我沒有看到您的評論的編輯。是的,我正在使用'WebSecurity.Login()'。從這個意義上說,我想我正在做一個雙重查詢 – Eonasdan
我喜歡這個解決方案。我會投票,但是我的名聲太低;)如果沒有辦法使用由Authorize過濾器派生的數據,我會感到失望。 – user1838937