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

lamp网站开发做网站注册35类还是42

lamp网站开发,做网站注册35类还是42,深圳网络服务有限公司,长沙装修公司口碑最好的是哪家#在CentOS7环境中,实现使用openresty配置文件,达到jwt指定用户userid不能访问的效果。 首先,你需要安装 OpenResty 和 JWT 组件: 安装 OpenResty 参考 OpenResty 的官方安装文档,在终端执行如下命令: $…

#在CentOS7环境中,实现使用openresty配置文件,达到jwt指定用户userid不能访问的效果。

首先,你需要安装 OpenResty 和 JWT 组件:

  1. 安装 OpenResty

参考 OpenResty 的官方安装文档,在终端执行如下命令:

$ sudo yum install yum-utils
$ sudo yum-config-manager --add-repo https://openresty.org/package/centos/openresty.repo
$ sudo yum install openresty
  1. 安装 LuaRocks 和 JWT
$ sudo yum install epel-release -y
$ sudo yum install lua-nginx* -y
$ sudo yum install curl -y
$ sudo yum install wget -y
$ sudo yum localinstall https://luarocks.org/releases/luarocks-3.5.0.tar.gz
$ sudo luarocks install lua-resty-jwt

接下来,你可以在 OpenResty 配置文件中实现需求:

  1. 在 nginx.conf 文件中,添加 http 块:
http {
...
}
  1. http 块中添加以下内容:
# 在 server 块中定义变量
lua_shared_dict jwt_dict 10m;
init_by_lua_block {local jwt = require "resty.jwt"local jwt_secret = "your-jwt-secret"-- 将 jwt 验证结果保存到共享内存中function save_jwt_result(jwt_result)local dict = ngx.shared.jwt_dictlocal key = ngx.var.http_authorizationlocal expires = 60 * 60 -- 设置过期时间为一小时if jwt_result.valid thendict:set(key, jwt_result.payload, expires)elsedict:set(key, 0, expires)endend-- 验证 jwtfunction validate_jwt()local auth_header = ngx.var.http_authorizationif not auth_header thenngx.exit(401)endlocal jwt_token = string.match(auth_header, "^Bearer%s+(.+)$")if not jwt_token thenngx.exit(401)endlocal jwt_obj = jwt:verify(jwt_secret, jwt_token)save_jwt_result(jwt_obj)if not jwt_obj.valid thenngx.exit(401)endend
}# 定义 server 块
server {listen 7000;server_name localhost;# 声明 location 块,匹配 /api/ 开头的请求location ^~ /api/ {# 验证 jwtaccess_by_lua_block {validate_jwt()-- 查询 PostgreSQL 数据库,获取 accountblack 表-- 如果用户 userid 被加入了黑名单,返回 403 状态码,否则继续执行local pgsql = require("resty.postgres")local pg = pgsql:new()pg:set_timeout(1000)-- 连接 PostgreSQL 数据库local ok, err = pg:connect{host = "your-postgres-db-host",port = 5432,database = "your-postgres-db-name",user = "your-postgres-db-username",password = "your-postgres-db-password"}if not ok thenngx.exit(ngx.HTTP_INTERNAL_SERVER_ERROR)end-- 查询用户是否在黑名单中local account_black_sql = string.format("SELECT accountid FROM accountblack WHERE userid = %s", ngx.var.jwt_payload.sub)local account_black_result, err = pg:query(account_black_sql)if not account_black_result thenngx.log(ngx.ERR, "Failed to query accountblack: ", err)ngx.exit(ngx.HTTP_INTERNAL_SERVER_ERROR)endif account_black_result[1] ~= nil thenngx_exit(ngx.HTTP_FORBIDDEN)end}# 转发请求proxy_pass http://172.16.01.6:8029/;}
}
  1. 其中,save_jwt_result(jwt_result) 函数用于将 jwt 验证结果存储到共享内存中,validate_jwt() 函数用于验证 jwt,access_by_lua_block 即 access 阶段执行的 Lua 代码块。在 access_by_lua_block 中,我们查询 PostgreSQL 数据库,获取 accountblack 表,如果用户 userid 在黑名单中,返回 403 状态码,否则继续执行,并将请求转发到 http://172.16.01.6:8029/

当用户请求 /api/ 接口时,将会首先执行 validate_jwt() 函数,验证 jwt 是否有效。如果 jwt 有效,我们将会查询 PostgreSQL 数据库,检查用户 userid 是否在黑名单表中。如果用户在黑名单中,请求将会被拒绝并返回 403 状态码;否则请求将会被转发到指定地址,并且在转发过程中会自动添加上验证后的 jwt 信息。

http://www.yayakq.cn/news/66885/

相关文章:

  • 深圳网站建设推广方案义乌商城网站开发
  • 通辽网站建设tlyltd平面设计怎么接单
  • 网站申请要多少钱如何让网站互动起来
  • 如何创办一个网站贵阳最新消息今天
  • 网站开发团队要几个人免费看视频的软件是什么
  • 重庆品牌型网站建设c 网站开发 视频
  • 搜集关键词的网站莱芜建设网站
  • 江干区住房和城市建设局网站茂名网站制作
  • 网站建设开发进度表企业搭建一个营销型网站多少钱
  • c 网站开发视频教程 高清网站开发文件夹
  • 网站备案现状wordpress语言文件编辑
  • 百度ip地址网络优化报告
  • 我想做个网站怎么做做数学题网站
  • 怎么网站设计企业网易邮箱
  • 深圳网站建设 site检察院门户网站建设成效
  • 江苏省建设注册中心网站wordpress 汉化模版
  • 肇庆 网站建设网站空间服务器
  • 建设营销型网站广州微信广告投放推广平台多少费用
  • 罗伯特清崎说的网络营销是什么刚做优化的网站什么能更新
  • 做分析图很好用的网站如何做淘宝客有没有免费的网站
  • 你买域名我送网站好用的百度网盘搜索引擎
  • 全球军事网站博物馆展陈设计公司
  • 深圳营销型网站建设价格百色建设网站
  • 网站开发方向 英语翻译桂林生活网论坛论坛
  • 怎么替换网站模板网页升级紧急通知俏佳人
  • 县区网站服务器机房建设承德网站建设规划
  • 中资源的 域名管理网站织梦建站教程视频
  • 福州市网站建设公司阿里巴巴运营每天必做
  • 怎么弄自己的网站东莞怎么制作网站
  • 亚星网站代理网页游戏排行榜前十名超清画面