使用ASP.Net会员制,是否可以使用多个会员制供应商来登录同一个网站?

 2023-02-16    354  

问题描述

情况是:

我们有几个(19)站点当前配置为使用不同的应用名称共享单个ASP成员资格数据库,例如:

使用ASP.Net会员制,是否可以使用多个会员制供应商来登录同一个网站?

<membership defaultProvider="Site1Membership">
  <providers>
    <add
      applicationName="/site1"
      name="Site1Membership" />
    <add
      applicationName="/site2"
      name="Site2Membership" />
  </providers>
</membership>

我的问题是,如果web.config中有多个提供程序,可以通过默认提供商以外登录?

在给定配置中,显然,存储在默认提供程序中的用户具有”/site1″的应用程序,可以登录,但我们希望存储库中的用户,其中包含”/site2″的应用程序.能够登录.

我们尝试在登录中使用提供者名称和ApplicationName进行前排用户名,例如:

site2:用户名或site2membership:用户名

既不似乎工作.

最终目标是,虽然我们想要19个站点来拥有单独的用户和安全性(即网站1用户无法登录网站2),但我们希望来自所有站点的用户可以在不需要的情况下登录和协作的第20个站点第二个用户名/密码.

推荐答案

可以这样做,但是您必须编写一些自定义代码.简而言之,您需要一种确定给定登录所属的用户组的方法:应用程序特定的用户或”全局”用户.我通过要求全球用户前缀与”g \”或”mycompany \”这样的登录来处理这一点,而普通用户则不需要执行此操作.

身份验证方面实际上很容易.在”登录”按钮或LogIncOntrol的OnaUthenticate方法的Click事件中,您只需检测用户并将它们与正确的成员资格提供商名称匹配.

MembershipProvider provider;
if ( username.Text.StartsWith("G\") then
    provider = Membership.Providers["GlobalProvider"];
else
    provider = Membership.Providers["StandardProvider"];

if ( provider.ValidateUser( ...

它变得复杂的是角色. SQLROLEPROVIDER不设计用于使用相同的用户存储处理多个应用程序.您必须更改SQLROLEPROVIDER使用的过程,以便兑现成员内容的应用程序,而不是其默认性质,这是仅使用RoleProvider的应用程序.此外,您还需要确保在登录时自动添加到某种角色的全局用户.

以上所述是小编给大家介绍的使用ASP.Net会员制,是否可以使用多个会员制供应商来登录同一个网站?,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对77isp云服务器技术网的支持!

原文链接:https://77isp.com/post/34000.html

=========================================

https://77isp.com/ 为 “云服务器技术网” 唯一官方服务平台,请勿相信其他任何渠道。