gpt4 book ai didi

javascript - Meteor cookie 和服务器端路由

转载 作者:行者123 更新时间:2023-12-03 11:08:14 25 4
gpt4 key购买 nike

似乎在 Meteor 中,如果没有我们正常工作流程中身份验证方面的某种解决方法,我们就无法调用服务器端路由来将文件渲染到页面。

软件/版本

我正在使用最新的 Iron Router 1.* 和 Meteor 1.*,首先,我只使用帐户密码。

背景/上下文

我有一个 onBeforeAction,它只是根据用户是否登录将用户重定向到欢迎页面或主页:

两者/routes.js

if (Meteor.isClient) {
Router.onBeforeAction(function () {
if (!Meteor.user() || Meteor.loggingIn())
this.redirect('welcome.view');
else
this.next();
}
,{except: 'welcome.view'}
);

Router.onBeforeAction(function () {
if (Meteor.user())
this.redirect('home.view');
else
this.next();
}
,{only: 'welcome.view'}
);
}

在同一个文件,both/routes.js,我有一个简单的服务器端路由,可以将 pdf 渲染到屏幕上:

Router.route('/pdf-server', function() {
var filePath = process.env.PWD + "/server/.files/users/test.pdf";
console.log(filePath);
var fs = Npm.require('fs');
var data = fs.readFileSync(filePath);
this.response.write(data);
this.response.end();
}, {where: 'server'});

添加了Cookie相关代码

我找到了一个SO答案,其中概述了设置和获取cookie的方法:SO Cookies technique

然后将以下代码添加到我的项目中:客户端/main.js

Deps.autorun(function() {
if(Accounts.loginServicesConfigured() && Meteor.userId()) {
setCookie("meteor_userid",Meteor.userId(),30);
setCookie("meteor_logintoken",localStorage.getItem("Meteor.loginToken"),30);
}
});

但这并没有按预期工作,setCookie 代码由于某种原因无效。

我的问题

Question 1: Using cookies, how do I properly set/get and check for the cookies?Question 2: What precautions should I take using the cookies approach?

Side Question: Is cookies the best way to go about this, or is there asimpler way to achieve the same thing?

最佳答案

您可以调用生成临时访问 token 的方法,当您从服务器获得肯定答案(意味着 token 已创建)时,您可以在加载 PDF 之前检查此 token 的有效性。

至于使用cookie:与调用方法、等待然后重定向/打开新选项卡相比,它可能更方便。我使用 W3C 客户端 JavaScript 函数测试了您的代码,它在客户端工作。函数getCookie 假设您是客户端,而不是服务器。您需要检查请求并提取 cookie。

关于javascript - Meteor cookie 和服务器端路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27732897/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com