【问题标题】:Form authentication and AllowAnonymous in ASP.NET MVC 4ASP.NET MVC 4 中的表单身份验证和 AllowAnonymous
【发布时间】:2013-11-19 16:36:44
【问题描述】:

我在我的 asp.net mvc Web 应用程序中使用表单身份验证,我想根据设备(电话、平板电脑或桌面)将用户重定向到适当的页面,问题是重定向有效,但用户必须登录。我想在登录前重定向。 我在 Home 控制器(负责重定向的控制器)上使用了 AllowAnonymous 过滤器,但它似乎不起作用。

我的 web.config:

<authentication mode="Forms">
    <forms loginUrl="Login" defaultUrl="/" timeout="40320"/> <!-- monthly -->
</authentication>
<authorization>
    <deny users="?"/>
</authorization>

*更新:*奇怪的是 [AllowAnonymous] 在其他控制器中工作,但不适用于默认 HomeController !!!

谢谢。

【问题讨论】:

  • 您是说您想要特定于设备的登录页面吗?
  • 我为现有系统开发了一个网络移动应用程序,如果用户使用桌面设备或平板电脑,应用程序必须重定向到标准站点。

标签: asp.net


【解决方案1】:

我认为您需要将 [Authorize] 属性添加到您的控制器和 [AllowAnonymous] 到您的操作。调试整个进程并确保应用程序不会抛出任何异常。

这对你有帮助

【讨论】:

    【解决方案2】:

    我认为您需要在视图方法中添加 [Authorize] 属性

    这对你有帮助

    http://msdn.microsoft.com/en-us/library/ff398049%28v=vs.100%29.aspx

    【讨论】:

    • 我将 [Authorize] 放在受保护的操作上。但就我而言,我想允许匿名访问我的控制器。
    【解决方案3】:

    为了允许用户在不登录的情况下查看特定页面,您需要添加一个“位置”元素,专门授权您应用的特定页面或区域。

    如果您有一个名为“/landingpage/android”的页面,请将其添加到您的 web.config 中,就在“system.web”的结束标记之后

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

    您可以将多个位置元素添加到您的 web.config 文件中。

    【讨论】:

      【解决方案4】:

      为了强制每个用户登录,你应该有一个 BaseController 派生自所有其他控制器,并在类级别上标记 [Authorize],或者你可以使用 [Authorize] 属性标记动作或控制器。只在登录页面保留[AllowAnonymous]属性,以便所有人都能到达登录页面

      【讨论】:

      • 我所有受保护的操作都用 [Authorize] 装饰。
      • 你能分享一下你在什么级别有[AllowAnonymous]属性,如果你在课堂上有它可能不起作用,如果可能的话你能分享一下课堂
      • public class HomeController : Controller { // // GET: /Home/ [AllowAnonymous] public ActionResult Index() { ... } }
      • 你可以试试 并删除授权标签。 IMembership 提供者应该好好照顾它
      猜你喜欢
      • 1970-01-01
      • 2014-06-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多