- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在使用 feathers.js 并尝试将对 payment-info.html 页面的访问限制为已登录的用户。
const app = feathers();
app.configure(configuration(path.join(__dirname, '..')));
app.use(compress())
.options('*', cors())
.use(cors())
.use(favicon( path.join(app.get('public'), 'favicon.ico') ))
.use('/payment-info.html', function(req,res,next){
if(req.isAuthenticated()){
next();
} else {
// 401 Not Authorized
next(new Error(401));
}
})
.use('/', serveStatic( app.get('public') ))
.use(bodyParser.json())
.use(bodyParser.urlencoded({ extended: true }))
.configure(hooks())
.configure(rest())
.configure(socketio())
.configure(services)
.configure(middleware);
module.exports = app;
但是,即使用户已登录,req.isAuthenticated() 也会返回 false。有没有办法将对公共(public)目录中的页面的访问限制为仅登录的用户?
最佳答案
要在页面加载场景中进行限制,您首先需要确保 token 在 cookie 中。查看 feathers-authentication
documentation了解如何启用 cookie。但非常重要的一点是,您要小心,不要通过 cookie 使自己遭受 CSRF 攻击。
使用当前版本的 feathers-authentication 插件,您必须手动设置它。您需要从 cookie 中读取 token 以供渲染中间件使用:
const jwt = require('jsonwebtoken');
const cookieParser = require('cookie-parser');
app.use(cookieParser());
app.use('/payment-info.html', function(req, res, next) {
let token = req.cookies['feathers-jwt'];
if (token) {
// Get the JWT secret to verify the token.
let secret = app.get('auth').token.secret;
jwt.verify(token, secret, function(err, decoded) {
if (err) {
return res.status(401).send('You are not authorized to view that page.');
}
return next();
});
} else {
return res.status(401).send('You are not authorized to view that page.');
}
});
切勿让任何服务直接使用 cookie 中的 token ,这一点很重要。渲染中间件可以提取 token 并使用它来发出服务请求,就好像它只是另一个客户端一样,但您永远不想从 cookie 中提取它并将其放置在 req.feathers
服务内部授权对象。这就是您向 CSRF 攻击开放 API 的方式。
此外,如果您完全启用 CORS,您很可能希望确保为渲染中间件禁用 CORS。仅在您的 Feathers 服务之前启用 CORS。
feathers-authentication@0.7.x
的另一个缺点是 cookie 过期时间与 token 过期时间不匹配。您需要手动设置 cookie 的 maxAge
过期时间以匹配您希望 token 有效的时间长度,如文档中所述。
feathers-authentication@1.x.x
(目前处于预发布阶段),将包括对服务器端呈现的更好支持,因此您不必自己连接它。它还将负责使 cookie 与 token 一起过期。
关于javascript - Feathers Js 在服务器端限制对页面的访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39908392/
我计划将数据文件格式从 parquet 更改为 feather。 Parquet 有压缩选项(lz4 等),我已经使用过它们。但我无法在 Feather 或箭头文件中找到它们。不支持压缩吗? 最佳答案
我同时使用 R 和 Python,我想将我的一个 pandas DataFrame 编写为一个 feather,以便我可以在 R 中更轻松地使用它。但是,当我尝试将其编写为 feather 时,我得到
在 Feathers 中,目标是将某个服务上可访问的数据限制为仅由当前登录用户拥有的数据。 假设我使用的是 Feathers 认证,这个服务上可用的数据存储在一个数据库表中,包含用户 ID 的表列称为
我尝试使用本地身份验证,但收到错误消息“无效登录”。 我从客户端发送“本地”授权。在服务器上接收数据 { strategy: 'local', email: 'email@gmail.co
我正在尝试在取自 Feather 球比赛的源音频文件中查找其中一名球员击球的实例。出于同样的目的,我用正面(命中声音)和负面(没有命中声音:评论/人群声音等)标签标记了时间戳,如下所示: shot_t
我有一个(每天增长的)大约 100 个大 excel 文件的列表,我用 Python 对其进行分析。由于我必须对所有文件运行几个循环,我的分析变得越来越慢。因此,我想将所有 excel 文件转换为 F
我正在处理一个包含 2000 万多条记录的非常庞大的数据集。我正在尝试将所有数据保存为 Feather 格式以便更快地访问,并在我继续分析时追加。 有没有办法将 Pandas 数据帧附加到现有的 Fe
我正在尝试根据关联表的值过滤数据,当我查找全部时它工作正常但是当我尝试按名称搜索时,我得到一个列不存在错误 我已经设置了一个钩子(Hook),如 https://github.com/feathers
我的 Feathers 应用程序需要能够具有两种 JWT 身份验证策略。对于users服务,我需要有,例如,all: [authenticate('carrier')]而不是 all: [authen
我确信这是非常简单的事情,但由于某种原因,我在尝试将feathersjs客户端与一个非常简单的jQuery应用程序集成时遇到超时。感兴趣的文件位于下面的 src 中。该存储库仅包含连接到 NedB 数
如何创建一个异步函数超时错误处理程序作为驻留在服务文件中的 Feather 中的钩子(Hook)来处理钩子(Hook)中的 Promise? 按照@Bergi on my previous quest
我有一项自定义服务,必须以 CSV 格式返回数据。 我无法使用标准 Express 路由,因为我需要在此端点上使用 Feathers 的 Hook 。 我找不到返回非 HTML、非 JSON 数据的
我正在尝试将 .rds file进入.feather file用于在 Python 中使用 Pandas 进行阅读。 library(feather) # Set working directory
有没有办法使用 pd.to_feather 附加到 .feather 格式文件? 我也很好奇是否有人知道最大文件大小方面的一些限制,以及在读取 .feather 文件时是否可以查询某些特定数据(例如读
我正在尝试将 .rds file进入.feather file用于在 Python 中使用 Pandas 进行阅读。 library(feather) # Set working directory
我应该使用 feather css 图标,但是图标在我的 mvc 元素上不起作用。我尝试更改文件路径,但它再次不起作用。 @font-face { font-family: "feather"
我是 Python 的新手,我正在尝试下载 feather库,但出现错误。我已经更新了 pip 和 setuptools,但我仍然遇到错误。这是我从 PyCharm 获得的输出: Collec
我正在使用 feathers.js 并尝试将对 payment-info.html 页面的访问限制为已登录的用户。 const app = feathers(); app.configure(conf
我正在评估 feathers.js对于一个项目。我喜欢它的愿望。因此,我决定尝试构建一个基本的内容管理系统,作为一种学习努力。事情进行的还算顺利。但是,我想在应用程序启动时将一些静态内容(文章)加载到
按照文档,我意识到有一个允许批量创建的选项,但我不明白在哪里以及如何设置该选项,这里是代码: // Initializes the `test` service on path `/test` con
我是一名优秀的程序员,十分优秀!