package main

import (
"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.Client func 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"][], "Basic ") decodeBasic, _ := base64.StdEncoding.DecodeString(encodeBasic) auth := string(decodeBasic) appidStr := strings.Split(auth, ":")[] appid, _ := strconv.Atoi(appidStr) var om objMessage err := json.NewDecoder(r.Body).Decode(&om)
if err != nil {
http.Error(w, err.Error(), )
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()
fmap["forbidden"] = int() 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: , // use default DB
}) log.Fatal(http.ListenAndServe(":8090", nil))
}

Token生成(转载)的更多相关文章

  1. APP开发 Token生成 验证

    准备好协议(HTTP).数据表示方法(JSON).请求数据的方法(REST) 选择一个合适的框架 接口特点汇总: 1.因为是非开放性的,所以所有的接口都是封闭的,只对公司内部的产品有效: 2.因为是非 ...

  2. Keystone几种token生成的方式分析

    从Keystone的配置文件中,我们可见,Token的提供者目前支持四种. Token Provider:UUID, PKI, PKIZ, or Fernet 结合源码及官方文档,我们用一个表格来阐述 ...

  3. php token 生成

    php token的生成   接口特点汇总: 1.因为是非开放性的,所以所有的接口都是封闭的,只对公司内部的产品有效: 2.因为是非开放性的,所以OAuth那套协议是行不通的,因为没有中间用户的授权过 ...

  4. JWT(JSON Web Token) 【转载】

    JWT(JSON Web Token) 什么叫JWTJSON Web Token(JWT)是目前最流行的跨域身份验证解决方案. 一般来说,互联网用户认证是这样子的. 1.用户向服务器发送用户名和密码. ...

  5. springcloud +spring security多种验证方式之第三方token生成自己的token通过校验和自己的表单验证大体流程

    步骤: 1.继承 WebSecurityConfigurerAdapter.class,其中使用两个过滤器,一个spring scurity自带的UsernamePasswordAuthenticat ...

  6. Django-jwt token生成源码分析

    一. 认证的发展历程简介 这里真的很简单的提一下认证的发展历程.以前大都是采用cookie.session的形式来进行客户端的认证,带来的结果就是在数据库上大量存储session导致数据库压力增大,大 ...

  7. Access Token 与 Refresh Token【转载哒科普啊】

    Access Token 与 Refresh Token   access token 是客户端访问资源服务器的令牌.拥有这个令牌代表着得到用户的授权.然而,这个授权应该是临时的,有一定有效期.这是因 ...

  8. C++随机迷宫生成[转载]

    原文:http://tieba.baidu.com/p/2596809144 #include<iostream.h> #include"time.h" #includ ...

  9. webapi token、参数签名是如何生成的(转载)

    API接口保障安全性原则:1.有调用者身份2.请求的唯一性3.请求的参数不能被篡改4.请求的有效时间 在刚接触接口开发时,可能脑子里压根就没有这个接口调用安全性的原则,但常识性的经验告诉我们,每一个请 ...

随机推荐

  1. 有关动态规划(主要是数位DP)的一点讨论

    动态规划(dynamic programming)是运筹学的一个分支,是求解决策过程(decision process)最优化的数学方法.20世纪50年代初美国数学家在研究多阶段决策过程的优化问题时, ...

  2. 【PyQt5 学习记录】001:第一个界面

    PyQt5 的安装很简单: pip3 install PyQt5 然后就是写一个最简单的界面试试手: import sys from PyQt5.QtWidgets import QApplicati ...

  3. 已有Web项目添加Maven支持

    IDE:MyEclipse 当我们在现有的Web开发项目中集成 Maven 的时候,需要修改以下几个地方: 1.将以下代码拷贝到工程根路径下的 .project 文件中的 <buildSpec& ...

  4. 英文版win10更新以后, 中文软件变成乱码

    原因是非Unicode程序的语言设置失效了 在区域设置里把当前系统区域设置改成"英语(美国)", 重启电脑后再改回"中文(简体, 中国)", 再重启就好了.

  5. latex 图形的放置

         Next: 16.3 清除未处理的浮动图形 Up: 16. 浮动图形环境 Previous: 16.1 创建浮动图形  16.2 图形的放置 图形(figure)环境有一个可选参数项允许用户 ...

  6. Linux开篇

    1.为什么学习Linux? 2.学习Linux的资料

  7. python之内置函数,匿名函数

    什么是内置函数? 就是Python给你提供的,拿来直接用的函数,比如print,input等等.其实就是我们在创建.py的时候python解释器所自动生成的内置的函数,就好比我们之前所学的作用空间 内 ...

  8. 【转】网络管理员必知之:IP地址划分

    1.IP地址分类         IP地址有四个段,包括网络标识和主机标识两部分:netid+hostid.         IP地址应用分为A.B.C三类,D.E类是保留和专用的.         ...

  9. maven将依赖的包一起打包

    把以下内容输入到pom中即可 <build> <plugins> <!-- 将项目的依赖包复制到 target/lib --> <plugin> < ...

  10. Mysql常用的锁机制

    一.引言                                                                                                 ...