.net - ASP.NET MVC - 临时要求除一页之外的整个站点授权的简便方法

标签 .net asp.net-mvc asp.net-mvc-3 action-filter

我正在构建一个混合了公共(public)页面和成员(member)专享页面的网站。登录系统可以正常工作。

但是我想启动一个封闭的、仅限邀请的预览,并暂时要求访问者登录才能进行除欢迎页面之外的所有操作。

目前我在某些操作方法上有 [Authorize] 属性。我也可以向其他操作方法添加额外的属性,但这感觉有点老套,而且以后当我想恢复为具有更多开放内容时更难正确删除它们。

那么,我怎样才能有效地添加站点范围的授权要求呢?回想一下,我希望单个 /Home/Index 路由也保持公开,以便我邀请的人可以在激活他们的邀请之前阅读一些信息。

最佳答案

我认为在 web.config 中执行此操作文件是最好的,因为它是临时的,不需要您添加任何 C#代码或依赖角色/名称等。

在您的 web.config 中执行以下操作

<configuration>
      <!-- system.web is the only already in your web.config 
           don't add this, just add the authorization element
           to the existing system.web element -->
  <system.web>
     <authorization>
        <deny users="?"/>
     </authorization>
  </system.web>

  <!-- the login path -->
  <location path="Login/Index">
     <system.web>
        <authorization>
           <allow users="?"/>
        </authorization>
     </system.web>
  </location>

  <!-- welcome page -->
  <location path="Home/Index">
     <system.web>
        <authorization>
           <allow users="?"/>
        </authorization>
     </system.web>
  </location>

  <!-- static files (images, css, js etc.) folder -->
  <location path="Content">
     <system.web>
        <authorization>
           <allow users="?"/>
        </authorization>
     </system.web>
  </location>

</configuration>

第一个<authorization>元素会将对您的应用程序的访问限制为仅经过身份验证/登录的用户。后续<location>元素在特定路径(登录页面、欢迎屏幕和静态文件)上放置异常。

确保您确认 path根据您的应用程序,每个位置的属性都是正确的。

有关 location 的更多详细信息元素可以在 MSDN 'location element' 找到.

关于.net - ASP.NET MVC - 临时要求除一页之外的整个站点授权的简便方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4729197/

相关文章:

c# - 使用 NAudio 将音频的播放同步到计时器

c# - 你如何遍历多维数组?

javascript - jQuery Datatable 让每个单元格成为一个链接

asp.net-mvc - 如何在 ASP.NET Core 2.0 中使用 Razor 页面处理 Ajax 请求

caching - ASP.NET MVC 3 中是否提供 donut 缓存

asp.net-mvc-3 - 根据 url 更改 Controller 中的布局

.net - 是否在VCS中使用NuGetpackages.config?

asp.net-mvc - .NET 系统架构设计中涉及多个模型和聚合的良好实践是什么

c# - 在哪里放置授权方法?

c# - MySql - 3 个月后删除数据