【问题标题】:hubot-auth not authenticatinghubot-auth 未进行身份验证
【发布时间】:2017-08-11 14:15:05
【问题描述】:

我刚刚安装了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

“好的,schroeder 有‘测试’的角色。”

myscript status

“抱歉。需要‘测试’角色。”

我有:

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

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

【问题讨论】:

    标签: authorization hubot


    【解决方案1】:

    即使在启动时,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."
    

    【讨论】:

    • 如果你安装了 redis-brain 脚本,所有使用大脑记忆的脚本都会失败或行为异常(根据我的经验,它们都会抛出错误)。如果您删除 redis-brain,它们将正常工作,因为它们将使用内存中的大脑。你的问题是你的假设是错误的,消息hubot-redis-brain: Using default redis on localhost:6379 表示在配置中没有找到redis url,所以它使用默认值。 hubot-redis-brain: Successfully connected to Redis 是你想要的。始终检查脚本的代码以节省一些挫败感;)
    猜你喜欢
    • 2015-09-23
    • 2016-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多