关于新浪云存储的权限问题Authorization

最近在项目中用到的新浪云存储。可以把项目中涉及到的资源放到云里面存储,目前市面上比较多的,有阿里,新浪,百度,当然还有一些小众的云存储平台,比如说七牛,op等。

在官网上能够下载到各种语言的api.里面好多东西虽然在api里面已经给了实现,但是感觉不是很全面。

比如说签名:原始文档中提及到的三种方法(签名算法):

签名算法ssig:


三种认证方式如下:

  1. HTTP Request Header(Authorization)方式
  2. URL签名认证方式
  3. Cookie认证方式
但是实现起来只有第二种是api文档中给出具体实现的。

对于新浪里面的私有资源的获取方法,新浪的api里面给出的可以直接使用的方法只有URL认证方式。但是这种认证方法不够安全,相比之下httprequest认证authorization的方法比较安全,最近尝试了好多方法;

1, www-authorization认证,这是种简单的认证,需要用户输入用户名密码,然后把authorization的内容传到request header。

客户端请求
GET /private/index.html HTTP/1.0
Host: localhost

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 Express 应用程序中,您可以使用中间件函数来验证用户是否具有特定的权限。在下面的示例中,我们将使用 `jsonwebtoken` 库来解析 JWT token,然后检查用户是否具有指定的权限。 ```javascript const express = require('express'); const jwt = require('jsonwebtoken'); const app = express(); // 准备一些模拟用户数据 const users = [ { id: 1, name: 'Alice', role: 'admin' }, { id: 2, name: 'Bob', role: 'user' }, { id: 3, name: 'Charlie', role: 'user' } ]; // 中间件函数用于验证 Authorization 头部的 JWT token 和用户权限 function authorize(role) { return (req, res, next) => { // 获取 Authorization 头部的值 const authHeader = req.headers['authorization']; const token = authHeader && authHeader.split(' ')[1]; // 如果 Authorization 头部不存在或格式不正确则返回 401 错误 if (!token) { return res.status(401).json({ error: 'Unauthorized' }); } try { // 验证 JWT token 是否有效 const decoded = jwt.verify(token, 'secret_key'); // 检查用户是否具有指定的角色 const user = users.find(u => u.id === decoded.id && u.role === role); if (!user) { return res.status(403).json({ error: 'Forbidden' }); } // 将用户数据存储在请求对象中 req.user = user; next(); } catch (err) { // 验证失败则返回 403 错误 res.status(403).json({ error: 'Forbidden' }); } }; } // 使用中间件函数验证路由 app.get('/admin', authorize('admin'), (req, res) => { res.json({ message: `Hello ${req.user.name}! You are an admin.` }); }); app.get('/user', authorize('user'), (req, res) => { res.json({ message: `Hello ${req.user.name}! You are a user.` }); }); // 监听端口 app.listen(3000, () => { console.log('Server started on port 3000'); }); ``` 在上面的代码中,`authorize` 中间件函数用于验证 Authorization 头部的 JWT token 和用户权限。在 `authorize` 函数中,首先获取 Authorization 头部的值,然后验证 Authorization 头部是否存在或格式是否正确。如果验证通过,则将解密的 payload 数据存储在 `req.user` 中并检查用户是否具有指定的角色。如果验证失败,则返回 401 或 403 错误。 接着,在 `/admin` 和 `/user` 路由中使用 `authorize` 中间件函数来验证用户是否具有特定的权限。如果验证通过,则返回一个简单的 JSON 响应,否则会返回 401 或 403 错误。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值