我可以在客户访问网站时更改applicationName吗?

时间:2013-09-30 18:00:18

标签: c# sql-server membership-provider

当客户访问我的网站时,会传递一个guid,告诉我他们可以登录的公司。

我希望每家公司都能根据应用程序拥有自己的登录集。

我希望根据传入的guid为每家公司提出申请。

在访问AspNetSqlMembershipProvider之前,是否可以更改applicationName,以便将用户绑定到该应用程序?

<membership>
  <providers>
    <clear/>
    <add name="AspNetSqlMembershipProvider"
         type="System.Web.Security.SqlMembershipProvider"
         connectionStringName="ApplicationServices"
         enablePasswordRetrieval="false"
         enablePasswordReset="true"
         requiresQuestionAndAnswer="true"
         requiresUniqueEmail="true"
         maxInvalidPasswordAttempts="3"
         minRequiredPasswordLength="6"
         minRequiredNonalphanumericCharacters="0"
         passwordAttemptWindow="10"
         applicationName="webportal"/>
  </providers>
</membership>

我无法在配置中从代码中更改它,因为这会影响其他用户......所以,一旦我得到他们的guid,它可以通过编程方式完成吗?

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

您无法动态编辑web.config文件的内容。您可以做的是在web.config中放置几个​​不同的提供程序 - 即使唯一的区别是应用程序名称。然后动态地选择您想要的动态提供商:

Membership.Providers["MyOtherProvider"].ValidateUser(username, pwd);

然后在web.config

<membership>
  <providers>
    <clear/>
    <add name="AspNetSqlMembershipProvider"
         type="System.Web.Security.SqlMembershipProvider"
         connectionStringName="ApplicationServices"
         enablePasswordRetrieval="false"
         enablePasswordReset="true"
         requiresQuestionAndAnswer="true"
         requiresUniqueEmail="true"
         maxInvalidPasswordAttempts="3"
         minRequiredPasswordLength="6"
         minRequiredNonalphanumericCharacters="0"
         passwordAttemptWindow="10"
         applicationName="webportal"/>

  <add name="MyOtherProvider" ...
   ...
  />
  </providers>
</membership>