我有两级身份验证,首先用户输入他们的 nt/密码并由 LDAP 验证,然后我有一个自定义角色提供程序,以确保用户可以访问所述页面。
话虽如此,在我的 web.config 中,我有:
<authentication mode="Forms">
<forms loginUrl="~/Account.mvc/LogOn" timeout="2880"/>
</authentication>
<authorization>
<deny users="?"/>
</authorization>
<membership defaultProvider="ADMembershipProvider">
<providers>
<add connectionStringName="ADConnString"
name="ADMembershipProvider"
type="System.Web.Security.ActiveDirectoryMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
attributeMapUsername="sAMAccountName"
enableSearchMethods="false"
applicationName="ProgramName"/>
</providers>
</membership>
<roleManager enabled="true" defaultProvider="CustomRoleProvider">
<providers>
<clear />
<add name="CustomRoleProvider"
applicationName="ProgramName"
type="ProgramName.Providers.CustomRoleProvider"
attributeMapUsername="sAMAccountName"
/>
</providers>
</roleManager>
现在,如果我在登录表单中尝试使用语言按钮,它会调用一个不可用的操作,因为用户仍未通过 LDAP 身份验证。我的问题是:
我可以像使用 [Authorize] 属性进行角色检查一样避免对特定操作进行成员资格检查吗?
我尝试使用:
<location path="~/Home.mvc/ChangeCulture">
<system.web>
<authorization>
<allow users="*"/>
</authorization>
</system.web>
</location>
这是行不通的。从未调用过 ChangeCulture 操作。
这个答案:
ASP.NET MVC Forms 身份验证和未经身份验证的控制器操作
展示了如何为角色做这件事,对会员+角色有什么想法吗?
谢谢。