Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ASP.NET成员资格/角色-如何将用户链接到多个应用程序/角色?_Asp.net_Asp.net Membership_Asp.net Roles - Fatal编程技术网

ASP.NET成员资格/角色-如何将用户链接到多个应用程序/角色?

ASP.NET成员资格/角色-如何将用户链接到多个应用程序/角色?,asp.net,asp.net-membership,asp.net-roles,Asp.net,Asp.net Membership,Asp.net Roles,我正在进行一个项目,将一个大型网站拆分为更小、更具体的网站。我需要能够将访问这些站点的权限限制为只有具有必要权限的用户,并且希望尽可能使用现有的成员资格/角色数据模型 因此,理想情况下,我希望为单个用户分配潜在的多个应用程序(定义见aspnet_应用程序表)和特定于应用程序的角色(aspnet_角色)。但是,aspnet成员模型似乎不允许这样做,因为aspnet_用户和aspnet_成员记录持有特定的applicationID 如何将一个用户分配给多个应用程序/角色?我使用了my sql成员资格

我正在进行一个项目,将一个大型网站拆分为更小、更具体的网站。我需要能够将访问这些站点的权限限制为只有具有必要权限的用户,并且希望尽可能使用现有的成员资格/角色数据模型

因此,理想情况下,我希望为单个用户分配潜在的多个应用程序(定义见aspnet_应用程序表)和特定于应用程序的角色(aspnet_角色)。但是,aspnet成员模型似乎不允许这样做,因为aspnet_用户和aspnet_成员记录持有特定的applicationID


如何将一个用户分配给多个应用程序/角色?

我使用了my sql成员资格提供程序,我认为它在设计上与sql提供程序没有太大区别

为了将同一用户与不同的角色关联起来,应该有一个名为asp\u net\u usersinroles的表。在该表中,您可以插入具有不同roleID的相同userID,以便允许用户具有多个角色

同样,您需要创建UI以允许管理员用户分配不同的角色。在我的例子中,我使用了一个列表框来显示应用程序中的现有角色,这允许多重选择


希望这有帮助。

< P>如果您不希望您的数据链接到一个应用程序,也许除了标准的Sql成员资格提供程序,您可以考虑使用自定义提供程序。

它具有更大的数据源使用灵活性,例如,您可以在数据库中使用自己的表来存储成员/角色信息,并跨多个应用程序使用这些表等


您甚至可以更进一步,例如,您可以实现自定义成员资格和角色提供程序,创建单独的模块(程序集),然后在多个应用程序中重用该模块。

您可以在代码中设置成员资格检查所依据的应用程序名

我有一个管理应用程序,可以控制一系列其他应用程序的所有内容。我希望该应用程序的用户能够登录到所有其他应用程序,因此,如果默认应用程序中的用户登录失败,我将检查“管理”应用程序。这是我的登录部分。请注意行“Membership.ApplicationName=“Administration”


据我所知,sql成员资格提供程序允许使用多个应用程序。实际上,有一个名为“aspnet_applications”的表,其中存储了架构其余部分链接到的应用程序的id、名称和描述。@aleafonso-当然,你是对的,我只是想为你的答案提供另一个替代方案,以使问题变得更加明朗+1谢谢你的回答。@BojanSkrchevski-谢谢,我们需要的可能是定制提供商,阅读了你的博客文章,非常有用。@MarcusGuinane-总是乐于帮助;)感谢您提供的信息,我们肯定会使用aspnet_usersinroles表。
if (Membership.ValidateUser(model.UserName, model.Password))
{
    FormsAuthentication.SetAuthCookie(model.UserName, model.RememberMe);
    if (Url.IsLocalUrl(returnUrl) && returnUrl.Length > 1 && returnUrl.StartsWith("/")
        && !returnUrl.StartsWith("//") && !returnUrl.StartsWith("/\\"))
    {
        return Redirect(returnUrl);
    }
    else
    {
        return RedirectToAction("Index", "Home");
    }
}
else
{
    Membership.ApplicationName = "Administration";
    if (Membership.ValidateUser(model.UserName, model.Password))
    {
        FormsAuthentication.SetAuthCookie(model.UserName, model.RememberMe);
        if (Url.IsLocalUrl(returnUrl) && returnUrl.Length > 1 && retu    rnUrl.StartsWith("/")
            && !returnUrl.StartsWith("//") && !returnUrl.StartsWith("/\\"))
        {
            return Redirect(returnUrl);
        }
        else
        {
            return RedirectToAction("Index", "Home");
        }
    }
    else
    {
        ModelState.AddModelError("", "The user name or password provided is incorrect.");
    }
}