角色不起作用

时间:2012-07-21 21:01:47

标签: c# asp.net

我通过ftp手动发布我的asp.net网站一切正常(登录,注册等) 但是角色不起作用,例如:普通用户可以访问仅为管理员制作的页面。

这是我的web.config:

<?xml version="1.0"?>
<configuration>
  <connectionStrings>
    <add name="MyConnStrg" connectionString="provider details..etc.."
      providerName="System.Data.SqlClient" />
  </connectionStrings>
    <system.web>
      <roleManager enabled="true" defaultProvider="MyWebsiteTC">
        <providers>
          <add name="MyWebsiteTC"
          type="System.Web.Security.SqlRoleProvider"
          applicationName="/"
          connectionStringName="MyConnStrg" />
        </providers>
      </roleManager>
      <membership defaultProvider="MyWebsiteTCMembershipProvider">
        <providers>
          <add name="MyWebsiteTCMembershipProvider"
          type="System.Web.Security.SqlMembershipProvider"
          connectionStringName="MyConnStrg"
          enablePasswordRetrieval="false"
          enablePasswordReset="true"
          requiresQuestionAndAnswer="true"
          applicationName="/"
          requiresUniqueEmail="true"
          passwordFormat="Hashed"
          maxInvalidPasswordAttempts="5"
          minRequiredPasswordLength="7"
          minRequiredNonalphanumericCharacters="1"
          passwordAttemptWindow="10"
          passwordStrengthRegularExpression=""/>
        </providers>
      </membership>

      <compilation debug="true" targetFramework="4.0" />
      <authentication mode="Forms">
        <forms name=".KKDS"
          timeout="30"
          slidingExpiration="true"
          cookieless="UseCookies"
          defaultUrl="~/Default.aspx"
       />
      </authentication>
    </system.web>
</configuration>

管理员文件位于包含此web.config的文件夹中:

<?xml version="1.0"?>
<configuration>
  <system.web>
    <customErrors mode="Off"/>
    <authorization>
      <allow roles="Client" />
      <deny users="?"/>
    </authorization>

  </system.web>
</configuration>

为每个用户添加了角色一切正常但不是角色身份验证。 我该怎么办?

2 个答案:

答案 0 :(得分:0)

我认为应该是:

 <authorization>
    <allow roles="Client" />
    <deny users="*"/>
 </authorization>

因为您希望允许角色为Client的用户并拒绝其他任何人(而不是拒绝未登录的用户,例如在您的代码段中)。

答案 1 :(得分:0)

Wiktor Zychla提出了一个很好的建议。如果网站在您发布之前工作正常,我认为该问题可能与ApplicationName有关...我为其他人处理ApplicationName的问题。看看这个...

Going from dev to prod with .net Membership Provider