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

onedrive 做网站静态网站恶意点击软件

onedrive 做网站静态,网站恶意点击软件,网站数据库建设计划书,wordpress仿微信公众号目录 01 session的处理 02 获取网页图片验证码ID 03 测试图片验证码 04 图片验证码模块集成 05 图片验证码功能移植微服务 06 图片验证码功能对接微服务的web实现 07 对接微服务的web实现步骤小结 08 Redis数据库基本操作回顾 09 go语言操作Redis数据库API介绍 10 go语…

目录

01 session的处理

02 获取网页图片验证码ID

03 测试图片验证码

04 图片验证码模块集成

05 图片验证码功能移植微服务

06 图片验证码功能对接微服务的web实现

07 对接微服务的web实现步骤小结

08 Redis数据库基本操作回顾

09 go语言操作Redis数据库API介绍

10 go语言操作Redis数据库-测试案例

11 在微服务端添加redis数据库存储

12 对应web端实现及流程总结


01 session的处理

# 图片验证码

## 获取 注册页面 图片验证码ID

1.  启动 web页面,点击“注册” 按钮。在 NetWork —— Headers 中 看到 错误信息!

2. 从 URL中,提取 图片验证码ID 。 保存 成 uuid

3. 查看 gin 框架 中文文档。—— “获取路径中的参数”

4. web/main.go 中 添加 路由匹配:

    ```go
    router.GET("/api/v1.0/imagecode/:uuid", controller.GetImageCd)
    ```

5. web/controller/user.go 中 ,实现回调:

    ```go
    // 获取图片信息
    func GetImageCd(ctx *gin.Context) {
        uuid := ctx.Param("uuid")
        fmt.Println("uuid = ", uuid)
    }
    ```

02 获取网页图片验证码ID

## 图片验证码获取

- 去 github 中搜索 “captcha” 关键词。 过滤 Go语言。 ——  [afocus/*captcha*](https://github.com/afocus/captcha)


- 使用 go get github.com/afocus/captcha 下载源码包。

- 参照 github 中的示例代码,测试生成 图片验证码:

    ```go
    package main
    
    import (
        "github.com/afocus/captcha"   // 按住 Ctrl ,鼠标左键点击 captcha 看到 examples, 从中可以提取到 “comic.ttf”
        "image/color"
        "image/png"
        "net/http"
    )
    
    func main()  {
        // 初始化对象
        cap := captcha.New()
    
        // 设置字体
        cap.SetFont("comic.ttf")
    
        // 设置验证码大小
        cap.SetSize(128, 64)
    
        // 设置干扰强度
        cap.SetDisturbance(captcha.MEDIUM)
    
        // 设置前景色
        cap.SetFrontColor(color.RGBA{0,0,0, 255})
    
        // 设置背景色
        cap.SetBkgColor(color.RGBA{100,0,255, 255}, color.RGBA{255,0,127, 255}, color.RGBA{255,255,10, 255})
    
        // 生成字体 -- 将图片验证码, 展示到页面中.
        http.HandleFunc("/r", func(w http.ResponseWriter, r *http.Request) {
            img, str := cap.Create(4, captcha.NUM)
            png.Encode(w, img)
    
            println(str)
        })
    
        // 或者 自定固定的数据,来做图片内容.
        http.HandleFunc("/c", func(w http.ResponseWriter, r *http.Request) {
            str := "itcast"
            img := cap.CreateCustom(str)
            png.Encode(w, img)
        })
    
        // 启动服务
        http.ListenAndServe(":8086", nil)
    }
    ```

03 测试图片验证码

## 图片验证码模块集成到web

1. 将 ImgTest.go 中的测试代码, 粘贴到 web/controller/user.go 中的 GetImageCd() 函数
2.  导入需要的包。 将 “comic.ttf” 文件 存放到 web/conf/ 中。 对应修改访问代码。
3. 浏览器中,“注册” 页面测试!



## 微服务实现 图片验证码

1.  创建 微服务项目:  `micro new --type srv bj38web/service/getCaptcha`

    ​    创建完成,会在项目 bj38web 的 service/ 中,多出 getCaptcha 的微服务项目。

2. 修改密码本 —— getCaptcha/proto/getCaptcha.proto

    ```protobuf
    syntax = "proto3";
    
    package go.micro.srv.getCaptcha;
    
    service GetCaptcha {
        rpc Call(Request) returns (Response) {}
    }
    message Request {
    }
    message Response {
        // 使用切片存储图片信息, 用 json 序列化
        bytes img = 1;
    }
    ```

3. 编译 proto 文件。 —— make 命令!得到 getCaptcha.micro.go  和 getCaptcha.pb.go

4. 修改 service/getCaptcha/main.go 

    ```go
    import (
        "github.com/micro/go-micro/util/log"
        "github.com/micro/go-micro"
        "bj38web/service/getCaptcha/handler"
    
        getCaptcha "bj38web/service/getCaptcha/proto/getCaptcha"
    )
    
    func main() {
        // New Service
        service := micro.NewService(
            micro.Name("go.micro.srv.getCaptcha"),
            micro.Version("latest"),
        )
        // Register Handler
        getCaptcha.RegisterGetCaptchaHandler(service.Server(), new(handler.GetCaptcha))
    
        // Run service
        if err := service.Run(); err != nil {
            log.Fatal(err)
        }
    }
    ```

5. 修改服务发现 : mdns ——> consul

    1.  初始化consul

    2.  添加 consul 到  micro.NewSerive( )

        ```go
        consulReg := consul.NewRegistry()
        
        // New Service
        service := micro.NewService(
            micro.Address("192.168.6.108:12341"),  // 防止随机生成 port 
            micro.Name("go.micro.srv.getCaptcha"),
            micro.Registry(consulReg),                // 添加注册
            micro.Version("latest"),
        )
        ```

    3.  启动 consul , consul agent -dev 

04 图片验证码模块集成

6.  修改 handler/getCaptcha.go 文件。

    1.  删除  除  Call 以外的 其他 所有函数。—— 受 .proto 文件制约。

    2.  清空 Call 方法。准备添加具体实现代码。

    3.  将 之前实现的图片验证码测试模块代码, 剪切到 Call方法中。

    4.  在 getCaptcha/ 下 , 添加 conf/comic.ttf 

    5.  将 生成的图片验证码,写成 json 序列化数据, 通过 rsp 参数传出!

        ```go
        func (e *GetCaptcha) Call(ctx context.Context, req *getCaptcha.Request, rsp *getCaptcha.Response) error {
            // 生成图片验证码
        
            // 初始化对象
            cap := captcha.New()
        
            // 设置字体
            cap.SetFont("./conf/comic.ttf")
        
            // 设置验证码大小
            cap.SetSize(128, 64)
        
            // 设置干扰强度
            cap.SetDisturbance(captcha.NORMAL)
        
            // 设置前景色
            cap.SetFrontColor(color.RGBA{0,0,0, 255})
        
            // 设置背景色
            cap.SetBkgColor(color.RGBA{100,0,255, 255}, color.RGBA{255,0,127, 255}, color.RGBA{255,255,10, 255})
        
            // 生成字体
            img, _ := cap.Create(4, captcha.NUM)
        
            // 将 生成成的图片 序列化.
            imgBuf, _ := json.Marshal(img)
        
            // 将 imgBuf 使用 参数 rsp 传出
            rsp.Img = imgBuf
        
            return nil
        }
        ```

05 图片验证码功能移植微服务

## web端对接微服务实现

1.  拷贝密码本。 将 service 下的 proto/  拷贝 web/   下

2.  在 GetImageCd() 中 导入包,起别名:

    `getCaptcha "bj38web/web/proto/getCaptcha" `

3. 指定consul 服务发现:

    ```go
    // 指定 consul 服务发现
    consulReg := consul.NewRegistry()
    
    consulService := micro.NewService(
        micro.Registry(consulReg),
    )
    ```

4.  初始化客户端

    ```go
    microClient := getCaptcha.NewGetCaptchaService("getCaptcha", consulService.Client())
    
    ```

5. 调用远程函数

    ```go
    resp, err := microClient.Call(context.TODO(), &getCaptcha.Request{})
    if err != nil {
        fmt.Println("未找到远程服务...")
        return
    }
    ```

6.  将得到的数据,反序列化,得到图片数据

    ```go
    var img captcha.Image
    json.Unmarshal(resp.Img, &img)
    ```

7. 将图片写出到 浏览器.

    ```go
    png.Encode(ctx.Writer, img)
    ```

8. 测试:
    1. 启动 consul  ,  consul agent -dev
    2. 启动 service/  下的  main.go
    3. 启动 web/ 下的  main.go
    4. 浏览器中 192.168.IP: port/home    点击注册 查看图片验证码!

06 图片验证码功能对接微服务的web实现

## 连接形式

- 长连接:
    - TCP。—— 有状态!
- 短连接:
    - http。—— 无状态!断开后,再发送请求,与上次发送无关!
        - 选用带有 “时效性” 的介质,存储。 —— redis数据库。setex --- expire。

07 对接微服务的web实现步骤小结

# Redis 数据库

## Redis 基本使用

1. 修改 配置文件。 /etc/redis/redis.conf . 
    - bind 地址。修改成当前主机地址。 —— 192.168.6.108 
2. port:
    - 6379
3. 开启 redis:
    - sudo  redis-server  /etc/redis/redis.conf
    - 验证 : ps xua | grep redis  —— iP 和 port
4. 连接 redis :
    - redis-cli -h 192.168.6.108 -p 6379
5. 查看所有:
    - keys *
6. 删除所有:
    - flushall
7. 添加一条:
    - set key  value  ——   set  hello  world
8. 获取一条:
    - get key 

08 Redis数据库基本操作回顾

## go语言操作 Redis

- 从 redis.cn —— 客户端 —— go语言 —— 选择 redigo —— https://godoc.org/github.com/gomodule/redigo/redis#pkg-examples  查看 API
- 主要分为 3 类:
    1.  连接数据库。   
        - API文档中,所有以 Dial 开头。
    2.  操作数据库。   
        - Do() 函数【推荐】;  Send()函数, 需要配合Flush()、Receive() 3 个函数使用。
    3.  回复助手。   
        - 相当于 “类型断言”。根据使用的具体数据类型,选择调用。

- 添加测试案例:

    ```go
    package main
    
    import (
        "github.com/gomodule/redigo/redis"
        "fmt"
    )
    
    func main()  {
        // 1. 链接数据库
        conn, err := redis.Dial("tcp", "192.168.6.108:6379")
        if err != nil {
            fmt.Println("redis Dial err:", err)
            return
        }
        defer conn.Close()
    
        // 2. 操作数据库
        reply, err := conn.Do("set", "itcast", "itheima")
    
        // 3. 回复助手类函数. ---- 确定成具体的数据类型
        r, e := redis.String(reply, err)
    
        fmt.Println(r, e)
    }
    ```

09 go语言操作Redis数据库API介绍

## redis 存储 图片验证码的uuid 和 码值

- 微服务端

    1.  修改 service/proto 中 getCaptcha.proto 的 Request 消息体,填加 uuid 成员。

        ```go
        message Request {
            string uuid = 1;
        }
        ```

    2.  使用 make 命令,重新生成 getCaptcha.proto 对应的文件。

    3.  遵循 MVC 代码组织架构,在 service/getCaptcha/ 中 创建 model 目录

    4.  创建 modelFunc.go 文件 封装并实现 SaveImgCode() 函数:

10 go语言操作Redis数据库-测试案例

 ```go
        // 存储图片id 到redis 数据库
        func SaveImgCode(code, uuid string) error {
            // 1. 链接数据库
            conn, err := redis.Dial("tcp", "192.168.6.108:6379")
            if err != nil {
                fmt.Println("redis Dial err:", err)
                return err
            }
            defer conn.Close()
        
            // 2. 写数据库  --- 有效时间 5 分钟
            _, err = conn.Do("setex", uuid, 60*5, code)
        
            return err  // 不需要回复助手!
        }
        ```

    5.  在 getCaptcha.go 文件的 Call() 方法中, cap.Create() 后, 调用 SaveImgCode() 传参。

11 在微服务端添加redis数据库存储

 web端

    1.  修改密码本!因为 微服务端 修改了 proto/  , 添加消息体成员。 需要重新拷贝 proto/ 到web

    2.   修改 web/controller/user.go 中 Call() 方法传参。给 Request{} 初始化。

        ```go
        resp, err := microClient.Call(context.TODO(), &getCaptcha.Request{Uuid:uuid})
        if err != nil {
            fmt.Println("未找到远程服务...")
            return
        }
        ```

12 对应web端实现及流程总结

3. 测试验证:
        1. 确认 consul 已经启动 
        2. 启动 service/    main.go 
        3. 启动 web/   main.go
        4. 浏览器:192.168.6.108:8080/home  --- 点击“注册”。看到 图片验证码。
        5. 查看 redis 数据库, keys * 能看到 图片验证吗,对应 uuid。 校验!!

# 开发者平台

- 中国移动 —— 短信验证码 业务 —— 下放到各个大公司(资质)。

- 常用平台:
    1. 聚合数据:
    2. 京东万象:
    3. 腾讯云:
    4. 阿里云(推荐): 推荐,服务器。—— 生态好! API接口丰富。 对应开发友好度高!

- 资料搜索。
    - 免费:—— github 
    - 收费:—— 各种开发者平台。刁钻、生僻领域。
    - 最后Google。



## 注册阿里云账号

1. 通过实名认证
2. 开通短信验证码功能 —— 充值 2 元左右。
3. 申请 AccessKey
4. 申请签名。国内消息 —— 签名管理
5. 申请模板。国内消息 —— 模板管理
6. 测试使用  OpenAPI Explorer, 成功发送一条短信验证码!

http://www.dtcms.com/wzjs/333842.html

相关文章:

  • 做设计英文网站av手机在线精品
  • 柳林网站建设比较靠谱的电商培训机构
  • wordpress修改站点名百度在西安的公司叫什么
  • 建设企业网站平台主要的目的是太原做网络推广的公司
  • 常州企业自助建站燕郊今日头条
  • 企业建设网站目的是什么网站建设公司业务
  • 口碑最好的装饰公司网站建设公司seo关键词
  • 垦利区建设局网站2023年10月疫情恢复
  • 黄浦做网站公司重庆seo推广
  • 什么网站做服装批发比较大google play 安卓下载
  • 订阅号怎么做免费的视频网站企拓客app骗局
  • 网站建设的发票怎么做会计分录网络营销试卷
  • 晋江网站建设费用今日腾讯新闻最新消息
  • 电脑配件经营网站的建设营销推广软件
  • 什么网站教做美食kol推广
  • 如果一个网站没有备案免费b站在线观看人数在哪
  • 能进入各种网站的浏览器app拉新一手渠道
  • 做钢管用哪个门户网站广州seo网站排名
  • 福州网站建设案例如何在百度发广告推广
  • 门户网站 建设 投入网络营销渠道可分为哪些
  • 惠来做网站广告营销包括哪些方面
  • wordpress前端投稿上传图片网站优化助手
  • 济宁网站建设_云科网络杭州市优化服务
  • 佛山网站定制开发今晚日本比分预测
  • 购买域名做销售网站可以吗百度电脑网页版
  • 上海搜索引擎优化1青岛seo关键词优化公司
  • 微博建网站深圳推广优化公司
  • 兴城泳装电子商务网站建设seo广告平台
  • wordpress域名修改后官网优化包括什么内容
  • 昆明企业自助建站网络营销策划推广