具有窗体身份验证的 MVC3 中的自定义成员身份和角色



我在 MVC3 应用程序中使用用户和角色的自定义成员资格。 我有自定义的用户/角色类。 为此,我扩展了 RoleProvider 和 MemberProvider 类。

我似乎在我的应用程序中有时会丢失角色,并且我的授权 [Roles='xyz'] 属性无法正常工作并尝试重定向到帐户/登录。 当我的用户登录到应用程序时,我所做的只是

if (ModelState.IsValid)
            {
                if (MyCustomSecurity.Login(model.UserName, model.Password, model.RememberMe))
                {
                    FormsAuthentication.SetAuthCookie(model.UserName, model.RememberMe);
--other stuff
}

MyCustomSecurity.Login方法基本上在数据库中查找用户,如果有效则发送一个真值。

尝试调试应用程序的问题时,我遇到了以下链接

http://www.codeproject.com/Articles/578374/AplusBeginner-27splusTutorialplusonplusCustomplusF ASP.NET MVC 窗体身份验证 + 授权属性 + 简单角色

我是否也应该覆盖此链接中提到的 FormsAuthentication_OnAuthenticate()? 还是角色提供程序扩展类会处理这个问题?
谢谢

如果你在 AuthorizeAttribute 中使用角色,并且角色是你自己的类,所以你需要覆盖 RoleProvider,尤其是方法 GetRolesForUser:

public class CustomRoleProvider : RoleProvider
{
    public override string[] GetRolesForUser(string username)
    {
    // put your logic to discover which roles the user has
    }
}

完成此操作后,您必须在 Web.config 中注册 CustomRoleProvider:

<roleManager enabled="true" defaultProvider="CustomRoleProvider">
    <providers>
        <clear/>
        <add name="CustomRoleProvider" type="%YOURNAMESPACE%.CustomRoleProvider" />
    </providers>
</roleManager>

相关内容

最新更新