代码之家  ›  专栏  ›  技术社区  ›  Keith John Hutchison

使用mattermost的client4 go驱动程序使用个人访问令牌登录的正式方式是什么?

  •  0
  • Keith John Hutchison  · 技术社区  · 6 年前

    我们正在运行两个最重要的服务器。

    我们有一个python进程使用 https://github.com/Vaelor/python-mattermost-driver 在社区Python驱动程序中使用个人访问令牌。 此进程有一个不超时的会话,这是使用个人访问令牌登录的好处之一。 https://docs.mattermost.com/developer/personal-access-tokens.html

    我们使用用户名和密码与client4 go驱动程序一起登录,但这会在一段时间后超时。似乎没有办法使用个人访问令牌登录到官方客户端4驱动程序。

    https://godoc.org/github.com/mattermost/platform/model#Client

    client4的源位于 https://github.com/mattermost/mattermost-server/blob/master/model/client4.go

    它最接近的工作方式是使用用户名和密码登录,然后通过client.MockSession设置身份验证令牌,而client.MockSession在测试时失败。

    1 回复  |  直到 6 年前
        1
  •  0
  •   Keith John Hutchison    6 年前

    关键是 登录,设置个人访问令牌并调用client.GetMe。 在查看了python驱动程序的源代码之后,这一点变得很清楚。 相关片段是。

        fmt.Println("LoginAsTheBotUser", "Using personal access token")
        client.AuthToken = mattermost_personal_access_token
        client.AuthType = model.HEADER_TOKEN
        if user, resp := client.GetMe(""); resp.Error != nil {
            println("There was a problem logging into the Mattermost server.  Are you sure the access token is valid?")
            PrintError(resp.Error)
        } else {
            fmt.Println(client)
            botUser = user
            result = true
        }
    

    /* 
        mattermost_user_email, mattermost_user_password and mattermost_personal_access_token
        are globals set from reading a .env file on startup
        */
    func LoginAsTheBotUser() bool {
        fmt.Println("LoginAsTheBotUser")
        fmt.Println("LoginAsTheBotUser", time.Now())
        var result bool = false
        if mattermost_personal_access_token == "" {
            fmt.Println("LoginAsTheBotUser", "Getting access token from login with username and password")
            if user, resp := client.Login(mattermost_user_email, mattermost_user_password); resp.Error != nil {
                println("There was a problem logging into the Mattermost server.  Are you sure ran the setup steps from the README.md?")
                PrintError(resp.Error)
            } else {
                fmt.Println(client)
                botUser = user
                result = true
            }
        } else {
            fmt.Println("LoginAsTheBotUser", "Using personal access token")
            client.AuthToken = mattermost_personal_access_token
            client.AuthType = model.HEADER_TOKEN
            if user, resp := client.GetMe(""); resp.Error != nil {
                //if user, resp := client.Login(mattermost_personal_access_token); resp.Error != nil {
                println("There was a problem logging into the Mattermost server.  Are you sure the access token is valid?")
                PrintError(resp.Error)
            } else {
                fmt.Println(client)
                botUser = user
                result = true
            }
        }
        fmt.Println("LoginAsTheBotUser", time.Now())
        fmt.Println("LoginAsTheBotUser")
        return result
    }