Published: 11 Aug 2023 › Updated: 11 Aug 2023

推流、加密和验证 / nuxt#11
推流
推流就是一边获取一边传输的能力,常见是视频播放。在AI生成中也会常用到,推流有助于提高用户体验。在前端测试中,只有浏览器端的原生就去 fetch 才有 streaming 的能力,其它方法不行!Nuxt的 useFetch, $fetch都不行!
const url = "http://localhost:6200/test"
const prompt = "天空为什么是蓝色的?"
let query = [{role: "user", content: prompt}]
let dataObj = {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({
query: query,
})
}
const response = await fetch(url, dataObj)
if (response.ok) {
let i = 0
let getStream = function (reader) {
return reader.read().then(function (result) {
// 如果数据已经读取完毕,直接返回
if (result.done) {
return
}
// 取出本段数据(二进制格式)
let chunk = result.value
let text = that.utf8ArrayToStr(chunk)
// 将本段数据追加到网页之中
messageDiv.innerHTML += text
messageDiv.textContent += text
// 递归处理下一段数据
return getStream(reader)
})
}
getStream(response.body.getReader())
}
加密
import bcrypt from 'bcrypt'
const saltRounds = 10
//加密
set(val) {
let salt = bcrypt.genSaltSync(saltRounds)
let hash = bcrypt.hashSync(val, salt)
return hash
}
// 验证密码 为true则正确
const isPasswordValid = bcrypt.compareSync(
req.body.password,
user.password
)
jwt验证
Json Web Token (JWT) 是一种开放标准 (RFC 7519),它定义了一种紧凑且自包含的方式,用于在各方之间安全地传输信息作为 JSON 对象。此信息可以进行验证和信任,因为它是经过数字签名的。可以使用密钥(使用 HMAC 算法)或使用 RSA 或 ECDSA 对公钥/私钥对对 JWT 进行签名。
可以认为JWT是用户认证的一种协议,可以理解为服务端颁发给客户端的一张身份证,拿到身份证后此后客户端进行接口访问时携带身份证,服务端通过验证以允许客户端访问服务器资源,每一项的含义:
- Json表示令牌的原始值是一个Json格式的数据
- web表示是在互联网传播
- token表示令牌
yarn add jsonwebtoken
import jwt from 'jsonwebtoken'
const SECRET = "fdfh58GGhdsa2dd@ddds"
// 生成token
const token = jwt.sign({
id: String(user._id),
}, SECRET)
//时限
let token = jwt.sign(data, SECRET, {
expiresIn: 60 * 60 * 24 * 3 // 以s作为单位(目前设置的过期时间为3天)
});
//验证
const rawToken = String(req.headers.authorization).split(' ').pop()
const tokenData = jwt.verify(rawToken, SECRET)
// console.log(666, tokenData) //{ id: 'dddxx', iat: 1684119284, exp: 1684119304 }
推流、加密和验证是现阶段AI开发中非常实用的功能,如果你要开发个AI应用,那就不妨用起来吧!
Leave 推流、加密和验证 / nuxt#11 to:
Read more #cn posts
Best Posts From lemooljiang
We have not curated any of lemooljiang's posts yet. But you can encourage our curation team to review posts by visiting them regularly and by referring other readers. Because we give priority to frequently read content.