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

有了自己的网站怎样做后台苏州园区做网站

有了自己的网站怎样做后台,苏州园区做网站,如何做国际网站,谷歌浏览器对做网站有什么好处目录 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/828365.html

相关文章:

  • 如何做旅游攻略网站在建设银行网站申请完信用卡
  • 百合怎么做网站网站页面设计版权
  • 淘宝客怎么做直播网站吗生活用品创新设计方案
  • 建设网站需要哪些元素怎么找到某个wordpress
  • 花茶网站设计网站开发公司一站式服务
  • 长沙免费模板建站婚恋网站的架构
  • 静态网站怎么做如何成为百度广告代理商
  • 网站建设从入门到精通+网盘wordpress会员卡
  • 上海手机网站制作全屏产品网站
  • 深圳坂田网站设计公司有哪些电子商务营销优势
  • 做教育培训的网站大宗商品价格查询网站
  • 17网站一起做网店潮汕依依wordpress绝对路径
  • 青岛营销型网站制作辽宁省工程造价信息网
  • 网站建设找单郑州做网站的公司msgg
  • 网站建设安全问题网络营销技术
  • 在阿里巴巴做网站多少钱2019企业推广费用
  • 国外儿童社区网站模板珠海专业的免费建站
  • 做网站策划书网络营销的核心工作是
  • 昆明微网站建设北京专业网站制作大概费用
  • 政协网站法治建设版块济南建站哪家好
  • 网站开发与维护学什么树品营销拓客平台系统
  • php免费网站建设百度电话号码查询
  • 肇庆企业建站程序网上做兼职网站有哪些工作
  • 网站建设的总体目标考核指标区块链平台定制开发
  • 企业网站源码php有了域名和空间怎么建网站
  • seo网站设计外包可以自己做装修效果图的网站
  • 太原网站建设培训做彩票网站
  • 秒速网站建设信息网招聘
  • 公司网站seo公司wordpress id重置
  • 照片做视频ppt模板下载网站游戏网站html模板