博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Token生成(转载)
阅读量:6485 次
发布时间:2019-06-23

本文共 1704 字,大约阅读时间需要 5 分钟。

package mainimport (    "encoding/base64"    "encoding/json"    "log"    "net/http"    "strconv"    "strings"    "github.com/go-redis/redis"    "github.com/satori/go.uuid")type objMessage struct {    UID      int64  `json:"uid"`    UserName string `json:"user_name"`}type token struct {    Token string `json:"token"`}type tokenResponse struct {    Data token `json:"data"`}var client *redis.Clientfunc genToken(appid int, username string) string {    u2, _ := uuid.NewV4()    return u2.String()}func grantHandler(w http.ResponseWriter, r *http.Request) {    encodeBasic := strings.TrimPrefix(r.Header["Authorization"][0], "Basic ")    decodeBasic, _ := base64.StdEncoding.DecodeString(encodeBasic)    auth := string(decodeBasic)    appidStr := strings.Split(auth, ":")[0]    appid, _ := strconv.Atoi(appidStr)    var om objMessage    err := json.NewDecoder(r.Body).Decode(&om)    if err != nil {        http.Error(w, err.Error(), 400)        return    }    var tr tokenResponse    tr.Data.Token = genToken(appid, om.UserName)    fmap := make(map[string]interface{})    fmap["user_id"] = int64(om.UID)    fmap["app_id"] = int64(appid)    fmap["notification_on"] = int8(1)    fmap["forbidden"] = int(1)    client.HMSet("access_token_"+tr.Data.Token, fmap)    w.Header().Set("Content-Type", "application/json")    w.WriteHeader(http.StatusOK)    json.NewEncoder(w).Encode(tr)}func main() {    http.HandleFunc("/auth/grant", grantHandler)    client = redis.NewClient(&redis.Options{        Addr:     "172.16.0.201:6379",        Password: "", // no password set        DB:       1,  // use default DB    })    log.Fatal(http.ListenAndServe(":8090", nil))}

 

转载于:https://www.cnblogs.com/nuanshou/p/10553016.html

你可能感兴趣的文章
$.each() each
查看>>
Linux获取进程执行时间
查看>>
<转>SQL Server返回最后一个标识值的三个函数:IDENT_CURRENT、@@IDENTITY、SCOPE_IDENTITY...
查看>>
文件与文件系统的压缩与打包命令
查看>>
mysql命令
查看>>
MySQL通配符与正则表达式
查看>>
linux下修改tomcat内存大小
查看>>
windows下安装redis(转载)
查看>>
php不常用而又实用的函数
查看>>
Html5 Egret游戏开发 成语大挑战(六)游戏界面构建和设计
查看>>
bzoj 1208: [HNOI2004]宠物收养所
查看>>
3cDEOAMONR软件的简单实用(tftp32)
查看>>
Kickstart+Dhcp+Nfs+Tftp+Pxe 最实用的批量linux服务器安装
查看>>
手机端服务器开发Spring MVC上传头像,并返回JSON数据
查看>>
Win7共享/添加打印机
查看>>
它山之石
查看>>
Postfix邮件网关投递邮件报“fatal: open database /etc/postfix/transport.db: No su
查看>>
如何删除彻底归档日志文件
查看>>
虚拟化网络必须开放
查看>>
交换机安全 802.1X、port-security、DHCP SNOOP、DAI、VACL、SPAN RSPAN
查看>>