当前位置: 首页 > news >正文

石家庄手机建网站微信公众号免费模板素材网站

石家庄手机建网站,微信公众号免费模板素材网站,佛山深圳建网站,asp做网站前言:系统有一些文件是通过nginx静态资源转发直接访问文件服务器进行访问,有信息泄露风险,因此需要增加登录验证。由于之前的文件预览都是前端通过a标签直接跳转到文件目录,逐一修改预览功能耗时较多,因此在修改nginx配…

前言:系统有一些文件是通过nginx静态资源转发直接访问文件服务器进行访问,有信息泄露风险,因此需要增加登录验证。由于之前的文件预览都是前端通过a标签直接跳转到文件目录,逐一修改预览功能耗时较多,因此在修改nginx配置文件来实现此功能。

通过浏览器直接打开此路径,可以直接打开目标图片,需要修改为只有登录过的用户才可以打开图片。

http://your_ip:8040/staticfile/userfiles/XAGJGDYSB20250407Y531/CE202504011343046138/TEMP1111111/attachment/1/1167610aa17b0813233fe82d99403e41.jpg

修改思路:1.前端在登录之后将token存储在cookies里

                   2.在后台增加一个验证登陆状态的接口,返回特定状态码

                   3.修改nginx配置文件,静态文件跳转时先调用状态验证接口

一、前端修改

在登陆成功后,往cookies里set值,注销登录,删除掉。

验证:在下图可以看到此token,说明前端工作完成了。

需要注意的是,cookies最大4K,token不能超过,不然会设置不上。

二、后端接口修改

@AnonAccess
@GetMapping("/isLogin")
public ResponseEntity<?> isLogin() {boolean isLogin = StringUtils.isNotBlank(UserUtils.getUserId());log.info("=======================isLogin:{}", isLogin);if (isLogin) {return ResponseEntity.ok().build();} else {return ResponseEntity.status(HttpStatus.UNAUTHORIZED).build();}
}

新增上述接口,isLogin是自己项目里用于判断是否登录的接口。

验证:不带token访问此接口,返回401,携带token访问此接口,返回200

三、nginx配置文件修改

代码:

location /staticfile/ {
            auth_request /auth-validate/;
            auth_request_set $auth_status $upstream_status;
            alias /mnt/hd1/isptest/software/40_apache-tomcat-8.0.44/webapps/ROOT/;
            error_page 401 = @error401;
            error_page 403 = @error403;
            add_header 'Access-Control-Allow-Origin' '*' always;
           add_header 'Access-Control-Allow-Methods' 'GET' always;
           add_header 'Access-Control-Allow-Headers' 'Content-Type, Authorization, X-Requested-With' always;
           add_header 'Access-Control-Allow-Credentials' 'true' always;
        }    
       location  /auth-validate/ {
           proxy_pass http://127.0.0.1:8020/auth/isLogin;
           proxy_set_header Cookie $http_cookie;
          # 必须传递的headers
          proxy_set_header Host $host;
          proxy_set_header X-Original-URI $request_uri;
          proxy_set_header X-Real-IP $remote_addr;
          # 清除不需要的headers
          proxy_pass_request_body off;
          proxy_set_header Content-Length "";
        
         # 从Cookie中提取JWT
         set $jwt "";
         set $auth_header ""; 
         if ($http_cookie ~* "token=([^;]+)(?:;|$)") {
               set $jwt $1;
               set $auth_header "Bearer $jwt";  # 仅在提取到 token 时设置
         }
         proxy_set_header Authorization $auth_header;
    }
    

        # 错误处理
    location @error401 {
        return 401 '{"code":401,"message":"Unauthorized"}';
    }

    location @error403 {
        return 403 '{"code":403,"message":"Forbidden"}';
    }

原来转发就是直接根据识别的路径,转发到对应的文件目录,改为先调用权限认证接口,若接口返回401,403则不能访问。

注意事项:

1.如果修改后重启nginx报错,可能是缺少http_auth_request_module模块,需要给nginx安装http_auth_request_module模块。

配置nginx,需要支持http_auth_request_module
    找到nginx初始压缩包目录 
    nginx -V 查看原有配置参数,添加--with-http_auth_request_module
    ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_auth_request_module
    make
    sudo make install
    ./nginx -V 检查有没有 with-http_auth_request_module
    重启nginx(先停后启,不要reload)

四、效果展示

1.cookies没有token,访问静态资源无法加载

2.在新的tab页登录账号,确保浏览器里有cookies,在访问此文件,则加载正常。

http://www.dtcms.com/a/429707.html

相关文章:

  • 网站界面设计案例wordpress模板后门
  • 网站代码优化方案网站托管是什么意思
  • 用于做网站头的图片wordpress静态缓存
  • 商丘给企业做网站的公司如何不用百度推广做网站
  • 地方门户网站加盟服装网站建设项目实施报告
  • 做网站咸阳国内服务器租用
  • 苏州市住房和城乡建设局网站学网站开发怎么就业
  • 装修设计灵感网站网站建设维护合同模板
  • 建设监理继续教育网站经典营销案例100例
  • 杭州网站建设源码wordpress评论头像插件
  • 企业网d1net的安全防护邢台短视频优化
  • 微信微博网站建设意见书wordpress 深度优化
  • 免费建个超市网站网站推广优化排名教程
  • 关于网站开发的销售网页生成
  • 网站海外推广多少钱wordpress打造云笔记
  • 网站备案地址查询做门户网站服务器选择
  • 旅游网站前台模板如何做网站建设团队建设
  • 做竞价网站服务器多少钱智慧团建网站登录密码是啥
  • 徐州服饰网站建设建大型网站公司简介
  • 网站公司网站开发小程序代理项目
  • 网站做语音识别网站轮播图片特效
  • 德文网站建设安徽省招标投标信息网
  • Python中docstring用法详解
  • 响应式手机网站制作精准ip地址查询工具
  • 网站建网站建设网页做app网站制作
  • 网站托管主要干点什么亚马逊seo搜索什么意思
  • 哪里有网站制作建设长春网站建设推广
  • 默认网站预览能能显示建设中做网站架构图
  • 建网站是永久的吗桂林北站怎么去阳朔
  • 佛山网站免费制作网站选项卡