gpt4 book ai didi

loopback4 - 环回 4 : How to inject user in endpoint

转载 作者:行者123 更新时间:2023-12-03 14:53:10 25 4
gpt4 key购买 nike

我有一个端点,用户和 guest (未经过身份验证)都可以将数据发布到:

 async create(
@requestBody({
content: {
'application/json': {
schema: {
type: 'object',
properties: {
create_account: {type: 'boolean'},
password: {type: 'string'},
password_repeat: {type: 'string'},
currency: {type: 'string'},
payment_method: {type: 'string'},
products: {type: 'array'},
voucher: {type: 'string'},
customer: {type: 'object'},
news_letter: {type: 'boolean'},
},
},
},
},
})
@inject(SecurityBindings.USER) currentUserProfile: UserProfile,
order: Omit<Order, 'id'>,
): Promise<{url: string}> {
const userId = currentUserProfile[securityId];
}

但是,我不确定如何从 session 中获取登录用户,因为我收到以下错误:
The key 'security.user' is not bound to any value in context

在这种情况下如何获取用户 ID?

最佳答案

Controller 端点需要用 @authenticate() 修饰和 @authorize()必须事先设置装饰器和身份验证系统。
认证和授权文件最近已经过大修。请引用它们作为最终指南。
例如,

  @post('/users/{userId}/orders', {
responses: {
'200': {
description: 'User.Order model instance',
content: {'application/json': {schema: {'x-ts-type': Order}}},
},
},
})
@authenticate('jwt')
@authorize({resource: 'order', scopes: ['create']})
async createOrder(
@param.path.string('userId') userId: string,
@requestBody() order: Order,
): Promise<Order> {
await this.userRepo.orders(userId).create(order);
}
不幸的是,如果没有更多信息(例如身份验证策略和授权提供者),则无法给出明确的解决方案,因为不同的 UAA 实现将有不同的解决方案。
进一步阅读
  • https://loopback.io/doc/en/lb4/Authentication-overview.html
  • https://loopback.io/doc/en/lb4/Loopback-component-authorization.html
  • 关于loopback4 - 环回 4 : How to inject user in endpoint,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62290117/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com