我想禁用要求一个MVC控制器操作的身份验证



我创建了一个mvc应用程序,我不希望在我的应用程序中的一个功能的身份验证。我希望用户应该能够从URL打开页面而无需登录。现在,如果我输入URL直接打开该功能,那么它将带我到页面上的签名。我想在一个功能中绕过身份验证过程。我已经尝试了以下代码在我的web.config.

<location path="ControllerName">
    <system.web>
        <authorization>
            <allow users="*"/>
        </authorization>
    </system.web>
</location>

我还添加了[AllowAnonymous]属性到我的控制器的一些动作。

我在web.config中为身份验证编写了以下代码。

<modules runAllManagedModulesForAllRequests="true">
    <remove name="FormsAuthentication"/>
    <add name="FormsAuthentication" type="System.Web.Security.FormsAuthenticationModule"/>
    <remove name="AuthorisationModule"/>
    <add name="AuthorisationModule" type="ProjectName.AuthorisationModule(which is for autentication), Project Name"/>
</modules>

有一个对整个应用程序的身份验证,我想放弃我的mvc应用程序的一个特性的身份验证。所以我在我的web.config

中添加了以下代码
<location path="ControllerName">
    <system.web>
        <authorization>
            <allow users="*"/>
        </authorization>
     </system.web>
 </location>

使用这段代码,它工作得很好

可以帮助解决您的问题的事实是,您可以有多个web。配置文件,如果你放一个web。在项目中的子目录中配置,然后可以包含仅针对该子目录的配置选项。因此,你可能想尝试添加一个子文件夹,只包含你想公开的控制器,然后创建一个单独的web。允许打开访问子目录的配置文件。根据这个答案关于通配符在web。配置文件,这里是示例代码,应该足够作为一个独立的web。配置提供

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

这样,您就不必纠结于指定您想要访问的控制器或操作,因为它们的区别是由目录结构中的文件组织来决定的。

最新更新