2013-03-08 71 views
0

我正在使用MVC4框架,並在整個代碼中的很多實例中,我想獲取當前用戶ID。全球獲取當前用戶ID功能

我知道要做到這一點,我可以使用:

[InitializeSimpleMembership] 
    public ActionResult SaveTask(FormCollection form) 
    { 
     var userID = WebSecurity.CurrentUserID; 
    } 

這工作正常,但我發現自己不得不把[InitializeSimpleMembership]ActionResult。理想情況下,我想一個靜態的功能,我可以打電話:

var userID = Utilities.CurrentUserID; 

這是一個叫做公用事業類:

public static Int32 CurrentUserID{ 

    get 
    { 
     return WebSecurity.CurrentUserID; 

    } 

    } 

注意,我知道這將失敗,因爲WebSecurity將需要InitializeSimpleMembership Attribute但是但我想以示例顯示我想實現的目標。這可能嗎?

回答

1

您可以將[InitializeSimpleMembership]添加到您的控制器的頂部,而不是對每一個動作,並可以使用WebSecurity.GetUserId(User.Identity.Name)

或者你可以使用

var userId = Membership.GetUser(User.Identity.Name).ProviderUserKey; 
+0

是的,我應該已經複製的默認賬戶之一,並把它如果控制器在頂部,如果沒有其他建議。 – CR41G14 2013-03-08 14:38:38

+0

在我的一個項目中,我們在自定義控制器上進行了必要的自定義,並使其他控制器繼承自它。 – 2013-03-10 05:58:38