【问题标题】:ASP.Net MVC 4's SimpleMembership InitializeSimpleMembership not being calledASP.Net MVC 4 的 SimpleMembership InitializeSimpleMembership 未被调用
【发布时间】:2013-03-28 15:40:23
【问题描述】:

我正在尝试让 SimpleMembership 为我的 ASP.Net MVC 应用程序工作。我所有需要授权的控制器都扩展了一个名为 SecureController 的基类:

[Authorize]
[InitializeSimpleMembership]
[HandleException]
public class SecureController : Controller
{
    protected UserProfile CurrentUser;

    protected override void OnAuthorization(AuthorizationContext filterContext)
    {
        base.OnAuthorization(filterContext);

        var currentuserid = WebSecurity.CurrentUserId;
        var context = new UsersContext();
        CurrentUser = context.UserProfiles.SingleOrDefault(u => u.AuthenticationId == currentuserid);

        if (CurrentUser != null)
        {
            ViewBag.UserName = CurrentUser.Name;
            ViewBag.UserId = CurrentUser.Id;
        }               
    }
}

我收到“在调用“WebSecurity”类的任何其他方法之前,您必须调用“WebSecurity.InitializeDatabaseConnection”方法。此调用应放在站点根目录下的 _AppStart.cshtml 文件中。”尝试调用 WebSecurity.CurrentUserId 时出现错误消息。我在 InitializeSimpleMembershipAttribute 的 OnActionExecuting 中设置了断点,但断点从未命中。似乎 InitializeSimpleMembership 被忽略了。

我还在 FilterConfig 中添加了对 InitializeSimpleMembershipAttribute 的调用。从 Global.asax 调用 FilterConfig.RegisterGlobalFilters 也没有帮助。

有什么想法吗?

【问题讨论】:

    标签: authentication asp.net-mvc-4 oauth-2.0 simplemembership


    【解决方案1】:

    我直接在 Global.asax.cx 中的Application_Start() 拨打电话

    protected void Application_Start()
    {
        WebSecurity.InitializeDatabaseConnection("MembershipContext", 
            "WebUsers", "Id", "UserName", autoCreateTables: true);
    
        // Other stuff from the template like AreaRegistration.RegisterAllAreas()
        // etc.
    }
    

    效果很好。

    您在网上找到的示例倾向于将该调用放在SimpleMembershipInitializer() 的构造函数中。在我的整个应用程序的上下文中,这对我不起作用(尽管我不记得究竟是什么问题)。

    【讨论】:

    • 感谢您的指导。我听从了您的建议并创建了一个配置来遵循 Global.asax 的设计方式。完美运行。
    猜你喜欢
    • 1970-01-01
    • 2015-01-26
    • 2013-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-08
    • 1970-01-01
    • 2013-11-10
    相关资源
    最近更新 更多