2013-03-08 66 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