asp.net – 当用户有多个角色时,位置授权如何工作?
我的web.config有这个授权规则:
<location path="Views/Administrator"> <system.web> <authorization> <allow roles="roleA,roleB" /> <deny users="*" /> </authorization> </system.web> </location> 这是什么意思? 当我测试登录过程时,roleA中的用户或roleB中的用户能够访问Views / Administrator下的所有内容,但是当用户使用roleC登录时,他们将被拒绝访问.到目前为止这是有道理的.乍一看,这意味着允许具有roleA或ro??leB的用户.但是,当我将角色roleA和roleC分配给同一个用户并尝试登录时,我被拒绝了.这意味着授权规则查看用户所处的所有角色,如果用户没有在< allow />中定义的所有角色,则拒绝用户访问.标签. 所以:“当用户有多个角色时,位置授权如何工作?” 解决方法
好的,所以我刚刚创建了一个使用默认角色管理器的新Web应用程序.我创建了三个角色:roleA,roleB,roleC.在我的应用程序中,我添加了您在上面使用的相同配置条目,但将路径更改为关于“About.aspx”页面的默认值.
在测试不同的角色配置之后,角色似乎完全按照预期工作.如果用户是多个角色的成员,例如roleA和roleC,如果您按照上面的方式设置配置,则允许“roleA,roleB”我的用户无论订单如何都可??以访问.在配置中删除roleA,我的用户不再具有访问权限.带走roleB并读取roleA,我的用户再次访问,同时读取它们,用户有权访问. 编辑2 – 使用“RoleGroup”删除图像,因为我相信它会增加混乱. http://www.asp.net/security/tutorials/role-based-authorization-cs.对基于角色的auth如何工作有一个很好的解释.没有关于多个角色的好消息. 另外作为旁注,您可以检查programaticaly的角色,这有点繁琐,但您可以随心所欲地处理授权,我在过去的项目中亲自完成此操作,以限制用户访问不同的页面,并且已经解决了对我很好. http://www.4guysfromrolla.com/articles/082703-1.2.aspx 编辑 – 添加有关我的测试的信息. 为了进一步解释我的测试方式: 我在Web管理工具中创建了一个基本用户和3个角色.创造了3个角色.并将roleA和roleC分配给我的用户. 从那里这里是我的配置文件.哪个是带有上述设置的新项目的默认Web配置. <?xml version="1.0"?> <configuration> <connectionStrings> <add name="ApplicationServices" connectionString="data source=.SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true" providerName="System.Data.SqlClient" /> </connectionStrings> <system.web> <compilation debug="true" targetFramework="4.0" /> <authentication mode="Forms"> <forms loginUrl="~/Account/Login.aspx" timeout="2880" /> </authentication> <membership> <providers> <clear/> <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="ApplicationServices" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/" /> </providers> </membership> <profile> <providers> <clear/> <add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="ApplicationServices" applicationName="/"/> </providers> </profile> <roleManager enabled="true"> <providers> <clear /> <add connectionStringName="ApplicationServices" applicationName="/" name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" /> <add applicationName="/" name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" /> </providers> </roleManager> </system.web> <system.webServer> <modules runAllManagedModulesForAllRequests="true"/> </system.webServer> <location path="About.aspx"> <system.web> <authorization> <allow roles="roleA,roleB" /> <deny users="*" /> </authorization> </system.web> </location> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net core标签助手的高级用法TagHelper+Form
- asp.net – 如何保护我的通用处理程序调用?
- asp.net-web-api – WebApi2属性路由404
- asp.net – nhibernate配置和buildsessionfactory时间
- asp.net-mvc – asp.net mvc通用控制器
- Castle DynamicProxy基本用法(AOP)
- 是否有基于.NET的中央身份验证服务实现?
- asp.net-mvc-4 – EF Code First,Model First或Db First?对
- asp.net-mvc – 在MVC中结合JS / CSS的任何经验?
- asp.net – Sitecore获取渲染的HTML