为了账号安全,请及时绑定邮箱和手机立即绑定

如何从 go lambda 中获取当前的认知用户

如何从 go lambda 中获取当前的认知用户

Go
蛊毒传说 2023-05-02 10:21:15
我很难从用 Go 编写的 lambda 函数中获取当前的 Cognito 用户属性。我目前正在做:userAttributes = request.RequestContext.Authorizer["claims"]如果我想收到电子邮件:userEmail = request.RequestContext.Authorizer["claims"].(map[string]interface{})["email"].(string)我认为这不是一个好方法,甚至不是一个可以接受的方法——它必须有更好的方法来做到这一点。

1 回答

?
慕运维8079593

TA贡献1876条经验 获得超5个赞

您可以使用 3rd 方库转换map[string]interface{}为具体类型。检查mitchellh/mapstructure库,它将帮助您以更好的方式实现。

因此,您可以使用以下代码改进您的代码:

import "github.com/mitchellh/mapstructure"


type Claims struct {

    Email string

    // other fields

    ID int

}


func claims(r request.Request) (Claims, error) {

    input := r.RequestContext.Authorizer["claims"]

    output := Claims{}

    err := mapstructure.Decode(input, &output)


    if err != nil {

        return nil, err

    }


    return output, nil

}

在你的处理程序的某个地方,你可以通过调用这个方法来获得你的声明


func someWhere(){


    userClaims, err := claims(request)


    if err != nil {

        // handle

    }


    // you can now use : userClaims.Email, userClaims.ID

}

func claims不要忘记根据您的(参数)更改请求参数类型r。


查看完整回答
反对 回复 2023-05-02

添加回答

代码语言

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号