hubot-auth无法进行身份验证

时间:2017-03-20 10:31:27

标签: authorization hubot

我刚刚安装了hubot,我正在尝试一些基本的测试。

我在/ scripts中有这个基本脚本:

module.exports = (robot) ->

  robot.respond /myscript status/i, (msg) ->
        if robot.auth.hasRole(msg.envelope.user, 'test')
            msg.reply "Success"
        else
            msg.reply "Sorry. Need 'test' role."

我发出适当的Slack命令:

  

schroeder has test role

     

“好的,施罗德有'测试'的角色。”

     

myscript status

     

“抱歉。需要'测试'角色。”

我有:

  • 试图扭转逻辑(if vs unless
  • 验证脚本正在更新(通过更改回复)
  • 验证了redis后端正在存储角色(通过redis-cli连接并检查密钥)。

重新阅读所有文档并查找错误报告后,我仍然看不到我错过的内容。它必须是简单的东西,但我没有想法。几乎就好像脚本无法查看存储的角色(hubot-auth可以,但我的脚本不能)。

1 个答案:

答案 0 :(得分:0)

即使在开始时,hubot也表示它正在连接到本地Redis服务器:

INFO hubot-redis-brain: Using default redis on localhost:6379

不是......至少不是你期望的方式。

如果redis实际上在运行,你应该得到一条额外的消息:

INFO hubot-redis-brain: Data for hubot brain retrieved from Redis

该消息未显示且没有Redis未运行的警告或错误。

如果你没有正确设置hubot-redis-brain,你会得到奇怪的错误和不一致,比如hubot-auth角色检查功能失败。

另外,我发现即使我正确设置了Redis,我的测试脚本也无效。即使我找到的所有教程都测试了msg.envelope.user,但这对我来说并不适用。我需要使用msg.message.user.name并解决大脑课程问题:

module.exports = (robot) ->

  robot.respond /fbctf status/i, (msg) ->
    user = robot.brain.userForName(msg.message.user.name)
    if robot.auth.hasRole(user, 'test')
      msg.reply "Success"
    else
      msg.reply "Sorry. Need 'test' role."