不同中间件是如何限制页面访问的

Django的url路由过滤,使用中间件解决不同用户间的权限访问拒绝, 一个网站一般会存在几种不同身份的用户,如可能会存在学生,教师,管理员等,每个用户的权限不一样,你当然不希望学生能够访问教师的页面或者看到管理员的管理页面,那么如何限制不同用户之间的路由过滤,或路由限制呢? Django的框架中给我们提供中间件,即请求访问过程中需要执行的逻辑,我们可以通过中间件编写逻辑代码实现路由过滤筛选,以解决权限问题。 编写中间件代码(如需了解中间件使用方法,可访问博主上一... 阅读详情


前言

在我们访问页面时候经常有403页面,这个在后端是如何实现的呢?

每个语言实现对页面限制访问的文件是不一样的,例如,web.xml,.htaccess,web.config,我们简单使用几个案例来说明一下

一、web.xml

1.什么是web.xml?

web.xml 文件只适用于 Java Web 应用程序。它是 Java EE(Enterprise Edition)规范的一部分,用于描述 Web 应用程序的配置和部署信息。

2.web.xml限制页面访问示例

可以通过 web.xml 文件中的安全约束(security constraint)来限制哪些页面可以访问,哪些页面不可以访问。安全约束是一种用于保护 Web 应用程序资源的机制,可以控制用户对特定资源的访问权限。

在 web.xml 文件中,可以使用<security-constraint>标签来定义安全约束,通过<web-resource-collection>标签来指定需要保护的资源,例如 Servlet、JSP 或静态文件等,然后使用<auth-constraint>标签来指定哪些角色可以访问受保护的资源。

例如,如下代码片段定义了一个安全约束,限制了 /admin/* 目录下的所有资源只能由具有 admin 角色的用户访问:

<security-constraint>
  <web-resource-collection>
    <web-resource-name>Admin Pages</web-resource-name>
    <url-pattern>/admin/*</url-pattern>
  </web-resource-collection>
  <auth-constraint>
    <role-name>admin</role-name>
  </auth-constraint>
</security-constraint>

二、.htaccess

1.什么是.htaccess?

.htaccess 文件是一个特殊的 Apache 配置文件,用于在 Web 服务器级别上配置网站的行为和属性。通过在 .htaccess 文件中添加一些指令,可以实现限制页面访问的功能

2. .htaccess限制页面访问示例

下面是一个基本的 .htaccess 文件,用于限制 /admin 目录下的所有页面只能由具有 admin 角色的用户访问:

AuthType Basic
AuthName "Restricted Area"
AuthUserFile /path/to/.htpasswd
Require valid-user

<FilesMatch "\.(php|html)$">
  AuthType Basic
  AuthName "Restricted Area"
  AuthUserFile /path/to/.htpasswd
  Require valid-user
</FilesMatch>

<Files "login.php">
  Order Allow,Deny
  Allow from all
</Files>

在上述例子中,
AuthType Basic指定了认证类型为基本认证,
AuthName指定了认证提示信息,
AuthUserFile指定了存储用户凭证的文件路径,
Require valid-user指定了需要验证的用户。

用于匹配特定的文件,例如 .php 或 .html 文件,并对它们进行相应的认证和访问限制。

用于指定特定的文件,例如 login.php,并对它们进行特定的访问控制,例如允许所有用户访问。

需要注意的是,为了使用 .htaccess 文件来限制页面访问,需要确保 Web 服务器已经启用了 .htaccess 文件的支持,并且允许覆盖默认配置。否则,.htaccess 文件中的指令将无法生效。

三、web.config

1.什么是web.config?

web.config 是一个 XML 格式的配置文件,通常在 ASP.NET Web 应用程序中使用。它提供了一种在 Web 应用程序级别上配置应用程序行为的方式,可以包含一些指令,用于控制应用程序的访问、安全、缓存、错误处理等方面的行为。

2. web.config限制页面访问示例

在 web.config 文件中,可以使用<authorization>元素来限制页面的访问。该元素可以包含一系列的 <allow> 和 <deny> 子元素,用于指定哪些用户或角色有权访问页面,哪些用户或角色没有访问权限。

例如,下面的 web.config 文件配置了只有管理员角色可以访问 Admin.aspx 页面,普通用户和未授权用户无法访问:

<configuration>
  <system.web>
    <authorization>
      <allow roles="Admin"/>
      <deny users="*"/>
    </authorization>
  </system.web>
</configuration>

在上述示例中, 指定了只有 Admin 角色的用户有权访问该页面, 则指定了所有未授权的用户都无法访问该页面。

除了使用角色和用户来限制页面的访问之外,还可以使用其他一些条件,例如 IP 地址、HTTP 方法、HTTP 头等。例如,下面的 web.config 文件配置了只有来自特定 IP 地址的请求才可以访问 Admin.aspx 页面:

<configuration>
  <system.web>
    <authorization>
      <allow ips="192.168.1.1"/>
      <deny users="*"/>
    </authorization>
  </system.web>
</configuration>

在上述示例中,<allow ips="192.168.1.1"/> 指定了只有来自 IP 地址为 192.168.1.1 的请求才可以访问该页面,<deny users="*"/> 则指定了所有未授权的用户都无法访问该页面。

四、nginx.config

1.什么是nginx.config?

Nginx 配置文件(nginx.conf)是 Nginx Web 服务器的主要配置文件,用于控制服务器的行为。Nginx 配置文件采用类似于 C 语言的语法,由一系列的指令和块组成,用于定义服务器监听哪些端口和域名,如何处理 HTTP 请求,如何进行负载均衡等。

2.nginx.config限制页面访问示例

在 Nginx 中,可以使用 location 指令来限制页面的访问。location 指令用于匹配 URL,并且可以指定一系列的条件,例如请求方法、请求头、请求参数等,从而决定是否允许访问该 URL。

以下是一个示例,演示如何使用 location 指令来限制页面的访问:

server {
    listen       80;
    server_name  example.com;

    location /admin {
        # 只允许来自特定 IP 地址的请求
        allow 192.168.1.1;
        deny all;
        
        # 只允许 POST 请求
        if ($request_method != POST) {
            return 405;
        }
        
        # 只允许特定用户访问
        auth_basic           "Restricted";
        auth_basic_user_file /etc/nginx/.htpasswd;
        
        # 其他配置
        ...
    }
    
    # 其他配置
    ...
}

在上述示例中,location /admin 表示匹配所有以 /admin 开头的 URL。该 location 块包含了一系列的限制条件,从而限制了对 /admin 页面的访问:

  • allow 192.168.1.1; deny all; 只允许来自 IP 地址为 192.168.1.1 的请求访问该页面,其他请求都会被拒绝。
  • if ($request_method != POST) { return 405; } 只允许使用 POST 方法访问该页面,其他请求都会返回 405 错误。
  • auth_basic “Restricted”; auth_basic_user_file /etc/nginx/.htpasswd; 只允许在验证通过的情况下访问该页面,需要输入用户名和密码。用户名和密码存储在 /etc/nginx/.htpasswd 文件中。
使用ACL限制不同网段的用户控制访问 不同valn之间的控制访问。 阅读详情

相关推荐

SAP ALV表格F4搜索帮助不触发DATA_CHANGE?3步排查搞定

本文针对SAP ALV表格中F4搜索帮助选择值后,DATA_CHANGE事件不触发的经典问题,提供了三步系统性排查方法。核心在于理解F4值回写机制,并需在事件处理中手动填充修改表以通知ALV控件数据变更,从而确保后续校验、自动计算等依赖DATA_CHANGE的逻辑能正常执行。

c2d3e4f的博客 1129

前端如何登录前防止地址栏输入页面路径直接跳转页面

在项目中,我们一般会加入对于登录用户的权限判断,一般后端在我们请求数据的时候去判断是否为登录状态,如果我们在浏览器中打开一个登录页面去登录跳转页面,再去打开浏览器的另一个页面直接粘贴跳转后的路由去进入页面,这时候需要我们在路由的钩子函数中去做一个登录的判断,在登录时我们需要在sessionStorage中存入一个值作为判断,(因为sessionStorage存入的值只存在于当前的页面),这样在每次...

weixin_45261457的博客 6381

CANape快速上手

文章帮助记录CANape学习过程。

小弱鸡的博客 1万+

web项目中禁止用户访问一些目录或目录中的文件

在web项目中的web.xml文件中进行配置,或者增加过滤器: 1.可以在web.xml文件中增加: <security-constraint> <web-resource-collection> <web-resource-name>Forbidden</web-resource-name>...

雪的期许 4901

GAN实战:用Python和TensorFlow打造你的第一个生成对抗网络(附完整代码)

本文是一份详细的GAN实战指南,指导读者使用Python和TensorFlow框架从零开始构建并训练一个生成对抗网络。文章涵盖了环境搭建、MNIST数据预处理、生成器与判别器模型构建、对抗性损失函数定义、训练循环编写以及关键的调试技巧,旨在帮助开发者通过动手实践深入理解GAN的核心原理与实现过程。

php55的博客 474

如何使用MCP2518FD外部CAN FD控制器实现速速CAN通信

1、SPI时序MCP2518FD外部CAN FD控制器具有小尺寸和SPI接口,可实现轻松连接。可将CAN FD通道轻松添加到缺少CAN FD外设或没有所需CAN FD通道的微控制器上。MCP2518FD支持经典格式 (CAN 2.0B) 和CAN灵活数据速率 (CAN FD) 格式中的CAN帧格式,符合ISO11898-1:2015标准。框图:本文实验板MCU:CAN FD控制器:MCP2518FDCAN FD收发器:ATA6560开发环境:想了解开发板更详细信息,请点击。

qq_57798018的博客 1万+

web.config 设置访问权限

我想让用户在访问我的程序的Admin文件夹下的页面时需要登录,而在访问其他页面时则不需要,也就是说Admin文件夹下的文件拒绝匿名访问.    下面是配置根目录下的web.config文件中关于授权验证的配置                                                                            

nuptsv_ice的专栏 2930

RT-Thread littefs控制GD32F4xx片内Flash

GD32F4xx RT-Thread下使用littefs 控制片内flash 调试记录

madao1234的博客 991

不同方式实现IP访问限制

要实现IP访问限制,有很多种方法。根据不同的使用场景大致可以分为权限限制和爬虫限制。顾名思义权限限制就是根据权限设定特定的IP能够访问,爬虫限制是为了应对爬虫短时间内大量的访问而进行的限制。 权限限制 权限限制的实现方式可分为三种,分别是linux防火墙实现、nginx配置实现和代码中实现。 linux防火墙实现: #阻止所有IP访问 iptables -A INPUT -s 0.0.0.0/0 -p tcp --dport 80 -j DROP #然后再添加白名单 iptables -A INP

Soheyi的博客 2217

智能车图像处理22-进阶篇14--小s的判断

这篇文章中主要讲述智能车图像处理中 : 小s的判断方法。

taiyuezyh的博客 2550

SAP S4 HANA:按单生产(MTO)场景中的COGS分割

本文介绍了SAP S/4HANA中提供的各种选项,以在销售订单/商品是按订单生产(以下称为MTO)生产流程中的成本对象时,在基于帐户的COPA环境中报告COGS分割信息。

adam915的博客 1186

Laravel Auth 中间件的访问限制

Laravel 默认的 auth 用户认证可以设置访问权限,这在实际项目中很有用. 我们可以使用 Auth 中间件提供的 auth 属性和 guest 选项来实现这个功能. 比如项目中有个 SessionsController 是进行用户回话管理的,如下: &lt;?php namespace App\Http\Controllers; use Illuminate\Http\Request;...

卩杉的博客笔记 2644

10、边缘智能学习技术解析

本文深入解析了边缘智能学习技术的四大核心方法:联邦学习、DNN拆分、迁移学习和八卦学习。文章从人类大脑的学习机制出发,引出边缘级智能的重要性,并详细阐述各类技术的架构、优势、挑战及适用场景。通过对比分析,展示了不同技术在隐私性、效率、可扩展性等方面的特性,并探讨了未来融合多种技术、软硬件协同优化及应用领域拓展的发展趋势,为边缘智能在物联网与人工智能领域的应用提供了系统性参考。

ppp33的博客 112

Tomcat使用过滤器实现页面的限制访问,登录才能访问受限页面

Tomcat使用过滤器实现页面的限制访问 需要解决的问题 最近在学tomcat,当接触到过滤器时,想着怎样才能对所有的页面请求都进行 一次拦截筛选,实现只放行登录页面,如果访问其他页面,则必须登录,如果没有 登录,则跳转到登录页面。这是为了防止没有登录的用户通过url访问网站的任何页 面,使用过滤器来对网站的所有页面都设置访问限制,避免了用户通过url跳过登录 环节而访问到受限制的页面资源。 ...

Nebula_DIX的博客 2230

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

python解除每日访问次数限制_Django 限制用户访问频率的中间件的实现

一、定义限制访问频率的中间件common/middleware.pyimport timefrom django.utils.deprecation import MiddlewareMixinMAX_REQUEST_PER_SECOND=2 #每秒访问次数class RequestBlockingMiddleware(MiddlewareMixin):def process_request(se...

weixin_42510446的博客 509

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

php 页面 访问 限制,php实现不同访问来源限制页面展示不同内容

摘要:根据不同访问来源展示不同内容,好比访问一些有地区分站的网站。而在 PHP 的常量 SERVER 中包含了 HTTP_REFERER 页面访问来源信息,通过它可以控制不同访问来源展示不同内容。 根据不同访问来源展示不同内容,好比访问一些有地区分站的网站,广州用户进来看到的是跟广州相关的内容,北京用户进来看到的是跟北京相关的内,看上去似乎很高大上。今天心月博主要分享的便是在PHP中实现根据...

weixin_33747775的博客 677

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

javaweb中添加过滤器,限制访问某些页面

问题: 在javaweb开发中,

◇″淡定。 5852

AspNetCoreRateLimit接口访问限制中间件的使用

AspNetCoreRateLimit接口访问限制中间件的使用

whll55的博客 502

Java限制IP访问页面 实现方式

Java限制IP访问页面 实现方式 最近遇到一个需求,一个只能内网访问的网站,需要限制ip访问。就是网站内的部分文章只有白名单内的ip才能打开。因为是静态化的网站,所有文章都是静态html页面。所以首先想到的就是直接js获取访问者ip然后再判断是否在白名单内,不在白名单内就到没有权限页面。 但是JS获取内网Ip还是比较麻烦的,查到几个方法最后试了都不行。 记录下查到的几个方法和最后实现的方法。 JS获取外网ip的方法: //最简单的获取外网ip的方法。可以直接用,但是没啥用.. &lt

猫头虎技术团队:授渔优于赠鱼,兴趣引领智慧,探索之乐尤显珍贵。商务合作+:Libin9iOak ,万粉变现+:CSDNWF,猫头虎承诺每年免费为100名C站创作者做账号流量诊断服务!全网搜:猫头虎技术团队,点击文章底部名片或直接私信我一切皆可谈,快找虎哥! 3239

Django 自定义中间件(IP限制频率、用户权限)

由于中间件要进行权限处理,所以这里将权限保存在session中。在后端的登录逻辑中,根据登录的用户名进行权限查询。理论来说,这个权限需要保存在数据库中。每个人的权限需要在登录以后才能获得。由于不是所有路径都要限制用户访问。由于每次都是直接进入的根路径。首先需要获取到访问的IP地址。所以需要创建一个登录界面。再次循环遍历可访问的地址。到最后的就是没有权限的。获取用户可访问的地址。然后是当前时间的获取。

weixin_48183870的博客 1680

ThinkPHP6.0 限制访问频率的中间件 think-throttle

ThinkPHP6.0 限制访问频率的中间件 think-throttle

qq7027的博客 2083

如何限制对 Django 中管理页面的访问?

通过使用人工智能大模型(如BERT、GPT等),我们可以对用户的身份进行更复杂的验证和判断。例如,我们可以通过分析用户的语言输入来确定他们是否是机器人,从而决定是否允许他们访问管理页面。为了限制对Django管理页面(admin site)的访问,我们可以创建一个自定义的中间件来检查用户的权限。现在,当用户尝试访问Django的管理页面时,如果他们不是管理员,他们会被重定向到首页并收到一条错误消息。2. 用户已登录但不是管理员,尝试访问管理页面。3. 用户是管理员,尝试访问管理页面。

460

Nginx的访问限制与访问控制

访问限制是一种防止恶意访问的常用手段,可以指定同一IP地址在固定时间内的访问次数,或者指定同一IP地址在固定时间内建立连接的次数,若超过网站指定的次数访问将不成功。原理:基于用户的访问控制是指通过用户的信息,来判断是否接受该请求,该功能基于Nginx模块——ngx_http_auth_basic_module。1、原理:基于主机的访问控制是指通过主机的信息,来判断是否接受请求,该功能基于Nginx模块——ngx_http_access_module。请求频率限制是限制客户端固定时间内发起请求的次数。

个人站点:https://www.heimajinpai.cn/ 3782

学习和测试WebApi项目限制客户端ip访问接口(基于中间件)

学习和测试基于中间件显示客户端IP访问WebApi接口

gc_2299的博客 668
上一篇: 腾讯xSRC[linux+docker]搭建教程
徐记荣
博客等级 码龄10年 83粉丝 38原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值