go-workflow icon indicating copy to clipboard operation
go-workflow copied to clipboard

请问怎么通过token 连接redis?

Open gordan-code opened this issue 5 years ago • 3 comments

能发布流程,启动流程失败,{"message":"已经连接 redis,请使用/workflow/process/startByToken 路径访问","timestamp":"2020-09-12 16:27:18.7498189 +0800 CST m=+2144.770280001","status":400,"error":"Bad Request","ok":false},这是什么情况 看到博客下评论说 连接redis要用token方式,具体见example.md 但我在example.md里没有找到相关说明,请问下该怎么使用呢?

gordan-code avatar Dec 01 '20 10:12 gordan-code

若是通过token的方式的话,

  1. 用户那边,登陆成功之后,需要将token与用户信息,类似(k,v)存入redis中 其中,k则为token,v则是一个json(包括用户相关的信息,如userId/role/dept等)

  2. go-workflow收到请求之后,会从http header中拿到token,然后从redis中获取用户相关信息

xfzen avatar Jun 25 '21 06:06 xfzen

@gordan-code 举个栗子: redis key:11025 redis val : { "ID": "11025", "username": "11025-张三", "company": "A公司", "department": "A公司-A部门", "roles": [], "departments": [] }

header key:Authorization header val : 11025

这样就能取到redis的值了。只要连接了redis,接口就必须带token,即header里含有Authorization值。Authorization的值就是redis key名。这样就对应起来了。

nottellyou avatar Feb 08 '22 07:02 nottellyou

不过,官方的连接redis的地方有bug,我虽然配置了redis,但redis没有跑起来,也认为已经连接成功。 具体修改的地方在ping.Result()后再加一个判断,看ping的值是否为空。

nottellyou avatar Feb 08 '22 07:02 nottellyou