如何在服务器端路由上检查用户是否已登录?
我会添加对“之前”的检查,但 Metor.user() 在这里不起作用。
提前致谢。
附注我已经发现如何让 Meteor.user() 在服务器端返回?,但不适用于iron-router
恐怕这是不可能的。我想问题出在这样一个事实:您正在尝试使用两种不同的协议连接到服务器 - 无论是字面上还是逻辑上 - 因此没有明显的方法来关联这两个操作。
然而,有一个非常简单的解决方案可以满足您的需求。您需要开发一个简单的特权令牌系统,或秘密密钥,或任何您所说的名称。首先创建一个服务器方法
var Secrets = new Meteor.Collection("secrets"); // only on server!!!
Meteor.methods({
getSecretKey: function () {
if (!this.userId)
// check if the user has privileges
throw Meteor.Error(403);
return Secrets.insert({_id: Random.id(), user: this.userId});
},
});
然后,您现在可以在客户端上使用它来获取secretKey
附加到你的AJAX
请求(或其他东西),无论是在HTTP
标题或在URL
本身。不要害怕!
如果您使用的话,它们都会被加密HTTPS
.
在服务器端,您现在可以检索secretKey
从传入的请求中检查它是否存在于Secrets
收藏。然后您就会知道用户是否被授予某些权限。
此外,出于安全原因,您可能希望在一段时间后从集合中删除您的密钥。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)