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

时间:2014-05-12 13:05:07

标签: c# asp.net

我创建了一个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>

2 个答案:

答案 0 :(得分:4)

整个应用程序都有一个身份验证,我想丢弃我的mvc应用程序的一个功能的身份验证。所以我在web.config中添加了以下代码

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

因此使用此代码可以正常工作。

答案 1 :(得分:0)

可能对您的问题有所帮助的事实是您可以拥有多个web.config文件 - 如果您将web.config放在项目的子目录中,那么您可以包含仅特定于该子目录的配置选项。因此,您可能希望尝试添加子文件夹以仅包含要公开使用的控制器,然后创建单独的web.config文件,以允许对该子目录的开放访问。根据{{​​3}},这里的示例代码应该足以作为提供

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

通过这种方式,您可以不必指定要访问的一个控制器或操作,因为区别在于目录结构中文件的组织。