Nginx ngx_http_auth_request_module模块鉴权【下】携带账号密码登录

简介: Nginx ngx_http_auth_request_module模块鉴权【下】携带账号密码登录

优化上篇文章

点我查看上篇

https://blog.csdn.net/A_yonga/article/details/127994515?spm=1001.2014.3001.5501


本篇改动

1.增加账号密码进行登录认证


nginx配置文件

server {
        listen       8082;
        server_name  localhost;
        location /private {
            # 传递参数
            set $auth_request_uri "http://127.0.0.1:8002/auth/token?name=$arg_name&pwd=$arg_pwd";
            auth_request /auth;
            # 鉴权通过后的处理方式
            proxy_pass http://127.0.0.1:8002/auth/success;
        }
        location = /auth {
            internal;
            # 鉴权服务器的地址
            proxy_pass $auth_request_uri;
            proxy_pass_request_body off;
            proxy_set_header Content-Length "";
            proxy_set_header X-Original-URI $request_uri;
}

注意看:name=KaTeX parse error: Expected 'EOF', got '&' at position 9: arg_name&̲pwd=arg_pwd

$arg_name以及 $arg_pwd 参数。稍后有说明


java代码

package com.task.controller;
import cn.hutool.http.server.HttpServerRequest;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.time.LocalDateTime;
import java.util.HashMap;
import java.util.Map;
/**
 * @author wuzhenyong
 * ClassName:NginxAuthRequestController.java
 * date:2022-11-23 09:38
 * Description: 认证服务器
 */
@RestController
@RequestMapping("/auth")
public class NginxAuthRequestController {
    @GetMapping("/token")
    public Map<String, Object> token(@RequestParam(value = "name", required = false) String name,
                                     @RequestParam(value = "pwd", required = false) String pwd,
                                     HttpServerRequest request) {
        System.out.println("请求认证服务器接口" + LocalDateTime.now());
        System.out.println(String.format("用户名:%s,密码:%s", name, pwd));
        if ("pitewu".equals(name) && "123456".equals(pwd)) {
            Map<String, Object> result = new HashMap<String, Object>();
            result.put("code", 200);
            result.put("msg", "成功");
            return result;
        }
        throw new RuntimeException("认证失败");
    }
    @GetMapping("/success")
    public Map<String, Object> success() {
        System.out.println("认证成功" + LocalDateTime.now());
        Map<String, Object> result = new HashMap<String, Object>();
        result.put("code", 200);
        result.put("msg", "成功");
        return result;
    }
}

浏览器测试

localhost:8082/private?name=pitewu&pwd=12345666


nginx配置文件中的$arg_name就是路径name的值哦


e8fabddb4009419b8b5cb0e081016416.png0439edef1e1b4694bb338fba8dd225f2.png

我们再把路径改为:localhost:8082/private?name=pitewu&pwd=123456

959f1ce111134debb1abe3b4a9f00c2a.png


14eb542f6e5349e9a07722b380f155b0.png


相关文章
|
2月前
|
负载均衡 应用服务中间件 API
Nginx:location配置模块的用法(一)
Nginx:location配置模块的用法(一)
256 2
|
2月前
|
缓存 应用服务中间件 nginx
安装nginx-http-flv-module模块
本文介绍如何为Nginx安装`nginx-http-flv-module`模块。此模块基于`nginx-rtmp-module`二次开发,不仅具备原模块的所有功能,还支持HTTP-FLV播放、GOP缓存、虚拟主机等功能。安装步骤包括:确认Nginx版本、下载相应版本的Nginx与模块源码、重新编译Nginx并加入新模块、验证模块安装成功。特别注意,此模块已包含`nginx-rtmp-module`功能,无需重复编译安装。
87 1
|
2月前
|
JSON API 数据格式
Python网络编程:HTTP请求(requests模块)
在现代编程中,HTTP请求几乎无处不在。无论是数据抓取、API调用还是与远程服务器进行交互,HTTP请求都是不可或缺的一部分。在Python中,requests模块被广泛认为是发送HTTP请求的最简便和强大的工具之一。本文将详细介绍requests模块的功能,并通过一个综合示例展示其应用。
|
2月前
|
负载均衡 应用服务中间件 Linux
在Linux中,常用的 Nginx 模块有哪些,常来做什么?
在Linux中,常用的 Nginx 模块有哪些,常来做什么?
|
2月前
|
缓存 应用服务中间件 API
Nginx七层(应用层)反向代理:HTTP反向代理proxy_pass篇(三)
Nginx七层(应用层)反向代理:HTTP反向代理proxy_pass篇(三)
34 3
|
2月前
|
缓存 前端开发 应用服务中间件
Nginx:location配置模块的用法(二)
Nginx:location配置模块的用法(二)
45 2
|
2月前
|
缓存 安全 应用服务中间件
Nginx七层(应用层)反向代理:HTTP反向代理proxy_pass篇(二)
Nginx七层(应用层)反向代理:HTTP反向代理proxy_pass篇(二)
31 1
|
2月前
|
运维 算法 应用服务中间件
运维系列.Nginx中使用HTTP压缩功能(一)
运维系列.Nginx中使用HTTP压缩功能(一)
34 1
|
2月前
|
缓存 应用服务中间件 nginx
[nginx]定制http头信息
[nginx]定制http头信息
|
3月前
|
应用服务中间件 Linux nginx
FFmpeg开发笔记(四十)Nginx集成rtmp模块实现RTMP推拉流
《FFmpeg开发实战》书中介绍了如何使用FFmpeg向网络推流,简单流媒体服务器MediaMTX不适用于复杂业务。nginx-rtmp是Nginx的RTMP模块,提供基本流媒体服务。要在Linux上集成rtmp,需从官方下载nginx和nginx-rtmp-module源码,解压后在nginx目录配置并添加rtmp模块,编译安装。配置nginx.conf启用RTMP服务,监听1935端口。使用ffmpeg推流测试,如能通过VLC播放,表明nginx-rtmp运行正常。更多详情见书本。
88 0
FFmpeg开发笔记(四十)Nginx集成rtmp模块实现RTMP推拉流
下一篇
无影云桌面