Golang实现复杂登录功能
用户登录框架
1. 框架简介
用户登录框架是一个用于处理用户登录和登出的封装框架,它提供了一系列的接口和函数来实现用户登录和验证的功能。该框架使用Redis作为Token的存储和验证工具,使用HTTP协议与Token服务进行交互。
2. 框架使用
2.1 创建Framework实例
tokenServiceURL := "http://localhost:8080/login"
options := []*Option{
&Option{
Username: "user1", Password: "password1"},
&Option{
Username: "user2", Password: "password2"},
}
redisAddrs := []string{
"localhost:6379"}
framework := New(tokenServiceURL, options, redisAddrs)
2.2 启动框架
framework.Run()
2.3 配置选项 可以通过修改options来添加或修改用户登录选项。
2.4 配置Redis地址 可以通过修改redisAddrs来添加或修改Redis服务器地址。
3. 框架接口和函数
3.1 New
New(tokenServiceURL string, options []*Option, redisAddrs []string) *Framework
创建Framework实例,参数为TokenService的URL地址、用户登录选项列表和Redis服务器地址列表。
3.2 Run
Run()
启动框架,监听HTTP请求。
3.3 loginHandler 处理用户登录请求。
3.4 logoutHandler 处理用户登出请求。
3.5 handleRoot 处理请求根路径的请求。
3.6 getToken 获取请求中的Token。
3.7 extractToken 从响应体中提取Token。
3.8 verifyResult 验证Token的结果。
4. 使用注意事项
- TokenService的URL地址需要根据实际情况进行修改。
- options参数需要根据实际需求进行配置。
- Redis服务器地址需要根据实际情况进行配置。
- 在使用框架之前,需要先启动框架。
- 框架提供了一系列的接口和函数来处理用户登录和验证的功能,需要根据实际情况进行调用。
完整代码封装
package loginTool
import (
"encoding/json"
"fmt"
"github.com/go-redis/redis"
"log"
"net/http"
)
// Option 是用户登录的选项
type Option struct {
Username string
Password string
}
// Framework 是一个封装了用户登录和登出功能的框架
type Framework struct {
tokenServiceURL string
options []*Option
redisClient *redis.Client
}
// New 创建一个 Framework 的实例
// 参数 tokenServiceURL 是 TokenService 的 URL 地址
// 参数 options 是用户登录的选项列表
// 参数 redisAddrs 是 Redis 服务器的地址列表
func New(tokenServiceURL string, options []*Option, redisAddrs []string) *Framework {
redisClient := redis.NewClient(&redis.Options{
Addresses: redisAddrs,
}