V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  rikka  ›  全部回复第 2 页 / 共 12 页
回复总数  235
1  2  3  4  5  6  7  8  9  10 ... 12  
2020-12-14 21:22:13 +08:00
回复了 odi 创建的主题 推广 天又冷了要过年了。进口红酒第四年... [抽奖 3 瓶]
分母
2020-12-06 19:43:19 +08:00
回复了 im67 创建的主题 推广 沃柑应期而至,继续抽奖啦~
分母
2020-12-05 00:25:29 +08:00
回复了 alect 创建的主题 推广 免费领取英国手机卡
2020-12-02 12:17:29 +08:00
回复了 rikka 创建的主题 Node.js nestjs 如何优雅地给 response 设置 header?
哦,我想到了,服务端 token 生成这个操作,独立出来,队列化处理吧
2020-12-02 12:12:33 +08:00
回复了 rikka 创建的主题 Node.js nestjs 如何优雅地给 response 设置 header?
@BoringTu #26 突然想到另外一个问题,并发的情况

比如客户端同时发 2 个请求过来,服务端检查都快过期了,于是都重新生成 token 给回去了,虽然最终只会保存一个 token,也暂时没导致什么大问题,但这令我不爽了

你的方法好像也有同样的问题:2 个请求同时过来,服务端打回,于是同时发 2 个 refresh token 的请求

请教下怎么考虑这种情况的
分母+1
2020-11-25 15:12:25 +08:00
回复了 rikka 创建的主题 Node.js nestjs 如何优雅地给 response 设置 header?
@BoringTu #23 你这建议我觉得很 OK,接受,下个项目可以考虑这么干

目前来讲我是 token 还没过期,但是快过期了,比方一个 token 过期时间 30 天,那么最后 10%的时间,也就是 3 天,最后 3 天有请求就在 header 发个新 token 达到自动续签的目的,这样服务端还是客户端都能在一个地方统一处理 token 问题,要说个优点吧我就觉得这样特别简单轻松
2020-11-25 14:21:59 +08:00
回复了 rikka 创建的主题 Node.js nestjs 如何优雅地给 response 设置 header?
@hongweiliuruige #19 这跟我 10L 说的差不多
2020-11-25 14:20:27 +08:00
回复了 rikka 创建的主题 Node.js nestjs 如何优雅地给 response 设置 header?
@BoringTu #20 你说的这个理我也认同

但你考虑下这种情况:客户端做其他业务请求时,服务端发现 token 快过期了,要发个新的给客户端,新 token 放哪里?放 header 最恰当吧

客户端怎么处理这种情况,当然是全局拦截器一发现 header 有 token 就保持起来,然后如果登录请求 token 放 body,那么客户端代码将有 2 处处理 token 的代码逻辑,如果登录 token 放 header,那么将简化为只有一处代码,不管是登录还是其他请求,只要 header 有 token 就保持起来,是不是更简明一点
2020-11-20 22:25:24 +08:00
回复了 rikka 创建的主题 Node.js nestjs 如何优雅地给 response 设置 header?
@Kasumi20 #16 我所有的控制器方法都是直接 return 数据,唯独这里不能 return,代码看起来我那个难受啊。。。
2020-11-16 14:11:48 +08:00
回复了 rikka 创建的主题 Node.js nestjs 如何优雅地给 response 设置 header?
@zy445566 #11 我说的副作用是指:只要用了 nestjs 提供的 @Res 装饰器后就不能直接 return 数据了,必须操作 res.json/send 去返回数据,然后这又导致拦截器不能正常工作

你说副作用具体是什么,还是说是指函数式编程中的那种副作用啊
2020-11-15 23:43:33 +08:00
回复了 rikka 创建的主题 Node.js nestjs 如何优雅地给 response 设置 header?
@luob #6 卧槽,还在想怎么实现这个 @CurrentUser,然后就受到启发,我可以自己写个装饰器自己拿到 response 啊

```
export const resp = createParamDecorator((data, ctx: ExecutionContext) => {
return ctx.switchToHttp().getResponse()
})

@Post('login')
async login (@Body() param,@resp() resp:any) {
const data={}
resp.set('token','')
return {data}
}
```

非常非常完美!!!
2020-11-15 23:13:46 +08:00
回复了 rikka 创建的主题 Node.js nestjs 如何优雅地给 response 设置 header?
业务交互数据放 body
鉴权这种相对特殊的数据放 header

难道不是更常见?
2020-11-15 23:05:35 +08:00
回复了 rikka 创建的主题 Node.js nestjs 如何优雅地给 response 设置 header?
@luob #6 还有个好处忘了讲,比方 token 还剩 10 分种就过期了,客户端做其他业务请求的时候我想重新下发一个新 token 给他啊,放 header 里面就就非常合适
2020-11-15 23:02:35 +08:00
回复了 rikka 创建的主题 Node.js nestjs 如何优雅地给 response 设置 header?
@luob #6

我也没啥特别的啊
仅仅仅就想 token 放 header 里面给客户端拿而已
为什么呢?因为客户端请求的时候会把 token 放在 header,所以为了对称美(狗头),下发 token 也想放 header 里面
2020-11-15 22:32:30 +08:00
回复了 rikka 创建的主题 Node.js nestjs 如何优雅地给 response 设置 header?
@luob #4 怎么会没意义呢,我鉴权用 jwt 来做,就想 token 放在 response header 中给客户端去拿,极其常见的情况

另外你第一段代码试过了吗,你一旦用 @Res 这个装饰器后面 return 就没用了
2020-11-15 19:37:31 +08:00
回复了 rikka 创建的主题 Node.js nestjs 如何优雅地给 response 设置 header?
@zengming00 #1 我在这里被众人安利 nestjs 😂
遇到同样的问题,搜到这帖,然后自己看了看源码,解决如下

加个装饰器函数
//set-module-prefix.decorator.ts

```ts
import { PATH_METADATA, MODULE_METADATA } from '@nestjs/common/constants'

const { IMPORTS, CONTROLLERS } = MODULE_METADATA

function resolveController (target, controllers = []) {
controllers.push(...(Reflect.getMetadata(CONTROLLERS, target) ?? []))
const imports = Reflect.getMetadata(IMPORTS, target)
if (imports) {
imports.forEach(module => {
resolveController(module, controllers)
})
}
return controllers
}

export function setModulePrefix (prefix:string) {
return target => {
resolveController(target).forEach(controller => {
const path = Reflect.getMetadata(PATH_METADATA, controller)
if (path) {
Reflect.defineMetadata(PATH_METADATA, prefix + '/' + path, controller)
}
})
}
}
````

使用,这样就自动给 AdminModule 下的所有控制器加上`admin`这个前缀了
```ts
import { Module } from '@nestjs/common'
import { AdminController } from './controllers/admin.controller'
import { setModulePrefix } from '../decorators/set-module-prefix.decorator'

@setModulePrefix('admin')
@Module({
imports: [
],
controllers: [
AdminController,
],
providers: [
],
})
export class AdminModule {}

```
2020-10-16 22:28:03 +08:00
回复了 rikka 创建的主题 问与答 如何在完全不写硬盘的情况下播放一个远程视频?
@linxiaojialin #33 其实不是啊,缓存、解码我大概都知道,我关注点在于:比方我有总计 100G 视频,那我播放完这些视频不就得往硬盘里写入 100G 缓存数据,这很“伤硬盘”,我想解决这个问题
2020-10-16 19:33:28 +08:00
回复了 rikka 创建的主题 问与答 如何在完全不写硬盘的情况下播放一个远程视频?
@yeqizhang #26 是固态不金贵,大概就是一种特殊性癖喽,这也导致平常写代码能不写临时文件就不写,尽可能在内存操作完成
1  2  3  4  5  6  7  8  9  10 ... 12  
关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   991 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 26ms · UTC 23:36 · PVG 07:36 · LAX 15:36 · JFK 18:36
♥ Do have faith in what you're doing.