我正在尝试想出一种方法来保护一组管理CRM页面,这些页面控制着我正在工作的Meteor应用程序。只有一个代码库,在一个项目中有服务器,面向客户的网站和面向管理员的网站。
我需要一个登录页面,可以验证一个用户名和密码对,以及一个简单的方式来检查客户端和服务器端的用户的状态。我还需要一种方式,管理员的授权超时,如果它没有被使用了x分钟。
我已经看过流星帐号包了,它对我所需要的东西来说太多了。这个网站将永远只有一个管理员用户,所以将只有一组管理员用户名和密码来存储。我不希望它存储在数据库中,而是在应用程序启动时与服务器上的设置文件一起加载。它不需要角色,电子邮件,密码重置功能。
对我可以用来实现这一点的包或方法有什么建议吗?
发布于 2016-08-15 17:49:55
我知道你说过accounts:password包看起来有点“夸张”,但实际上并非如此,你在那里得到的是可插拔的UI (通过accounts-ui和其他基于它的包)。我采取的方法是这样的(即使对于支持多用户的应用程序,这种方法也能很好地工作,因为最终你仍然需要引导你的启动用户)。
首先,我使用了帐户:密码和alanning:角色的组合。如果你绝对不需要角色部分,你可能不需要它,但在我个人的所有案例中,我发现为不同的用户提供多级ACL是很有用的。我们可以进入一场关于使用角色/组来锁定单个功能的完整哲学讨论,但这有点脱离了本讨论的主题。
接下来,您需要引导用户。在您的/server
文件夹中的某个位置,您将执行如下操作:
if (Meteor.users.find({}).count() == 0) {
// No users created...create default users
Accounts.createUser({
username: 'myuser',
email: 'myuser@mydomain.com',
password: 'myp4ssw0rd!',
profile: { profileProp: 'propVal` }
});
// Add new user to whatever roles needed
}
我在这里通常会做更多的事情,比如检查我的角色是否存在,如果不存在,在我尝试处理用户之前创建它们,但这里的关键是在服务器启动时执行此操作。
一旦创建了用户和角色,就需要检查/验证应用程序中的用户/角色。对于菜单项,您可以根据用户是否已登录和/或是否具有特定角色来显示/隐藏内容,您还应该在应用程序路由中验证需要ACL的路由,如管理员路由。此外,还应在所有出版物中使用用户id,以限制用户可以看到的数据。不要仅仅依靠隐藏一个菜单option...security,因为模糊是行不通的。
为什么我建议这样做呢?首先,它真的不是那么多代码。从字面上看,您可以在最多20行代码中完成此操作,并拥有完整的身份验证设置。这些代码行的好处远远超过了它需要花费30分钟的时间,因为现在你的应用程序中将有“真正的”用户身份验证,并且如果你将来决定这样做的话,你可以做像OAuth这样的事情。最重要的是,您解锁了无需编写代码的预构建UI插件、内置和附加方法来帮助检查ACL、按用户锁定数据的能力,并且您不必尝试实现自己的解决方案。
https://stackoverflow.com/questions/38959359
复制相似问题