MVC 4会员和角色提供者现在最明智的方法是什么

时间:2012-12-05 23:16:18

标签: asp.net-mvc-4 membership-provider

我们正在MVC 4中构建一个新站点。在检查是否允许某人登录时,有一些略微不同寻常的要求,因此在这种情况下,简单检查用户名,密码和启用是不够的(还有角色将是选中)。

我开始做传统的自定义membershipprovider类和roleprovider。 MVC4不喜欢我这样做:

This method cannot be called during the application's pre-start initialization phase.

据我所知,这是由于简单的会员提供者和oauth的东西,(我不太了解这个领域)。解决方法似乎是:

<add key="enableSimpleMembership" value="false"/>
<add key="autoFormsAuthentication" value="false"/>

让我想知道,我是否仍然在做会员提供者?我的数据库是本地的,我有一个服务层,其中包含所有逻辑,用于指示用户是否可以登录以及他们拥有哪些角色和权限。我应该看看oauth /简单会员/其他方式,或者如上所述,关闭简单的会员资格?

如果我确实通过appsetting将其关闭了,那么我可以在稍后阶段将oauth整合起来(这只是我的思考范围很广,目前还没有这个要求)。是否可以使用多种身份验证机制?

或者它真的如此简单,(accountController):

    public ActionResult Login()
    {
        if(logiclayer.CheckAccess("username", "password"))
        {
              var persistCookie = false;
              FormsAuthentication.SetAuthCookie("userName", persistCookie);
        }
        return View();
    }

所以他们设置了cookie,然后控制器可以使用[Authorize]属性?这不会考虑[Authorize(Roles = "admin")],因为如果没有设置角色提供程序,这会引发错误,这会回到原始问题,关于如何进行此操作。

1 个答案:

答案 0 :(得分:1)

这里有一个讨论 asp.net 4.5 custom membership provider configuration throws strange exception 这似乎解决了这个问题,但是从最佳实践来看,我认为它仍然是使用成员资格提供者,但在配置中为enableSimpleMembership = false设置自定义成员