我通过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>
为每个用户添加了角色一切正常但不是角色身份验证。 我该怎么办?
答案 0 :(得分:0)
我认为应该是:
<authorization>
<allow roles="Client" />
<deny users="*"/>
</authorization>
因为您希望允许角色为Client
的用户并拒绝其他任何人(而不是拒绝未登录的用户,例如在您的代码段中)。
答案 1 :(得分:0)
Wiktor Zychla提出了一个很好的建议。如果网站在您发布之前工作正常,我认为该问题可能与ApplicationName
有关...我为其他人处理ApplicationName
的问题。看看这个...