前端不借助后端自己生成七牛的token
时间: 2023-11-30 12:04:24 浏览: 162
可以使用七牛的云存储 JavaScript SDK来生成七牛的token,而无需借助后端。首先,你需要在七牛的开发者后台获取你的Access Key和Secret Key。然后,使用这些密钥在前端代码中创建一个七牛的Auth对象,并使用该对象生成token。这样,你就可以在前端直接发送请求到七牛云存储,而无需借助后端来生成token。
以下是一个示例代码:
```javascript
// 引入七牛的JavaScript SDK
import qiniu from 'qiniu-js';
// 创建七牛的Auth对象
const accessKey = 'your_access_key';
const secretKey = 'your_secret_key';
const mac = new qiniu.auth.digest.Mac(accessKey, secretKey);
// 设置上传策略
const options = {
scope: 'your_bucket_name', // 你的空间名称
};
// 生成token
const putPolicy = new qiniu.rs.PutPolicy(options);
const uploadToken = putPolicy.uploadToken(mac);
// 使用生成的token进行文件上传等操作
// ...
```
注意:由于在前端生成token会暴露你的Access Key和Secret Key,因此建议在前端代码中使用临时密钥或签名直传等安全策略来保护你的密钥信息。
相关问题
uni-app前端不借助后端自己生成七牛的token,并且上传图片到七牛
在uni-app前端应用中,可以通过uni.request方法发送HTTP请求来调用七牛云的API生成token,并且使用该token上传图片到七牛。
首先,你需要在七牛的开发者后台获取你的Access Key和Secret Key。然后,按照以下步骤进行操作:
1. 在uni-app项目中创建一个util文件夹,并在该文件夹下创建一个qiniu.js文件,用于封装与七牛相关的函数。
2. 在qiniu.js文件中,编写生成七牛token的函数:
```javascript
// qiniu.js
// 引入crypto-js库用于生成HMAC-SHA1签名
import CryptoJS from 'crypto-js';
export function generateQiniuToken(accessKey, secretKey, bucketName) {
const deadline = Math.floor(Date.now() / 1000) + 3600; // token有效期为1小时
const putPolicy = {
scope: bucketName,
deadline,
};
const putPolicyStr = JSON.stringify(putPolicy);
const encodedPutPolicy = base64URLEncode(putPolicyStr);
const sign = CryptoJS.HmacSHA1(encodedPutPolicy, secretKey);
const encodedSign = sign.toString(CryptoJS.enc.Base64);
const token = `${accessKey}:${encodedSign}:${encodedPutPolicy}`;
return token;
}
function base64URLEncode(str) {
let base64 = btoa(str);
base64 = base64.replace(/\+/g, '-').replace(/\//g, '_');
return base64;
}
```
3. 在uni-app页面中,调用该函数生成七牛token,并使用uni.request方法上传图片到七牛:
```javascript
// 你的uni-app页面
import { generateQiniuToken } from '@/utils/qiniu.js';
// 在methods中的某个方法中调用以下代码
const accessKey = 'your_access_key';
const secretKey = 'your_secret_key';
const bucketName = 'your_bucket_name';
const token = generateQiniuToken(accessKey, secretKey, bucketName);
uni.chooseImage({
count: 1,
success: (res) => {
const tempFilePaths = res.tempFilePaths;
const tempFilePath = tempFilePaths[0];
uni.uploadFile({
url: 'https://upload.qiniup.com', // 七牛上传地址,详细地址请参考七牛官方文档
filePath: tempFilePath,
name: 'file',
formData: {
token: token,
},
success: (uploadRes) => {
// 上传成功后的处理逻辑
},
fail: (uploadErr) => {
// 上传失败后的处理逻辑
},
});
},
});
```
在以上代码中,我们调用generateQiniuToken函数生成七牛token,并将其作为formData中的token参数传递给uni.uploadFile方法。然后,使用uni.chooseImage方法选择要上传的图片,并通过uni.uploadFile方法将图片上传到七牛云存储。
注意:由于在前端生成token会暴露你的Access Key和Secret Key,因此建议在前端代码中使用临时密钥或签名直传等安全策略来保护你的密钥信息。
前端和后端如何使用jwt进行token校验
JWT(JSON Web Token)是一种广泛使用的跨域认证方案,它可以在前端和后端之间进行安全的token传递和校验。下面是前端和后端如何使用JWT进行token校验的一般步骤:
1. 前端在用户登录成功后,将用户的身份信息(如用户名、用户ID等)和密钥进行加密生成token,并将token存储在本地(如localStorage或cookie)。
2. 前端在发送请求时,将token添加到请求头中,例如:
```
Authorization: Bearer <token>
```
3. 后端在接收到请求时,会从请求头中取出token,并使用密钥进行解密获取用户的身份信息。
4. 后端根据解密后得到的用户身份信息,进行相应的权限校验和业务逻辑处理。
需要注意的是,为了确保安全性,密钥应该保密,并且token应该使用HTTPS协议进行传输。另外,为了防止token被伪造,应该使用一些有效期限制和刷新机制。
阅读全文