2011-03-29 105 views
0

我使用ASP.NET MVC 3,我试图做一些事情,应该是真的直线前进......角色的认证工作在web.config中使用的授权属性,但不是通过授权

我的应用程序使用Forms身份验证和这对控制器/操作来说是完美的。例如,如果我装饰要么控制器或与管理员组的成员只有下面的属性的动作可以查看它们:

[Authorize(Roles="Administrators")] 

但是我有下的默认脚本文件夹文件夹中称为管理员。我只希望Administrators组的成员才能够在这个目录中访问的脚本,所以我创建的目录里面以下新的web.config:

<?xml version="1.0"?> 
<configuration> 
    <system.web> 
    <authorization> 
     <allow roles="Administrators"/> 
     <deny users="*"/> 
    </authorization> 
    </system.web> 
</configuration> 

但是无论用户是其成员管理员组或他们没有收到302 Found消息,然后重定向到登录页面。

如果我将web.config更改为allow user="*",那么它可以工作。如果我为正在测试的特定用户添加allow users="Username",它也可以工作。

关于我要去哪里的错误或我可以开始调查的任何想法?

回答

0

你有RoleManager添加到您的web.config 默认Scripts文件夹 东西如下

system.web> 
    <authentication mode="Forms" > 
     <forms loginUrl="login.aspx" 
     name=".ASPXFORMSAUTH" /> 
    </authentication> 

    <roleManager defaultProvider="SqlProvider" 
    enabled="true" 
    cacheRolesInCookie="true" 
    cookieName=".ASPROLES" 
    cookieTimeout="30" 
    cookiePath="/" 
    cookieRequireSSL="false" 
    cookieSlidingExpiration="true" 
    cookieProtection="All" > 
    <providers> 
     <add 
     name="SqlProvider" 
     type="System.Web.Security.SqlRoleProvider" 
     connectionStringName="SqlServices" 
     applicationName="SampleApplication" /> 
     </providers> 
    </roleManager> 
    </system.web> 
+0

你werespot上,谢谢!我知道这将是简单的东西:) – MarkB29 2011-03-30 15:15:47