Car*_*ape 7 javascript ldap node.js meteor telescope
我正在使用NPM ldapjs和这个Meteor LDAP项目尝试在我的测试Telescope网站上启用LDAP.主要问题是我希望LDAP成为登录的唯一方法.我的计划是围绕内置的Telescope(Meteor?)登录方法进行包装.如果LDAP凭据通过,它将运行Telescope登录脚本并继续正常运行.
也许这是一个hacky解决方案,存在更好的解决方案?无论如何,我需要LDAP才能工作.现在,我正试图用这个覆盖默认的登录方法:
Template.signin.events({
'submit': function(event, template){
Session.set('errorMessage', null);
event.preventDefault();
console.log("My login script ran!"); // I never see this message =(
return Meteor.loginWithLDAP(template.find('#login-username').value,
template.find('#login-password').value, function(error) {
return Session.set('errorMessage', 'Login failed');
});
}
});
Run Code Online (Sandbox Code Playgroud)
正如评论所说,log命令永远不会运行(我知道因为我正在使用Chrome,并且尝试登录后控制台是空白的),此外,我得到每个页面加载:
Uncaught TypeError: Cannot read property 'events' of undefined
(anonymous function) @ ldap_client.js:45
(anonymous function) @ typ_accounts-ldap.js?0ad074ecfc292bededc7d318da4746392aa0f5f8:94
(anonymous function) @ typ_accounts-ldap.js?0ad074ecfc292bededc7d318da4746392aa0f5f8:101
Run Code Online (Sandbox Code Playgroud)
第45行是Template.signin.events({,所以我得出的结论是Template没有signin成员.我已经看到Template.signin.events({...})代码有几个不同的地方(只是带有引号的谷歌"Template.signin.events"),但我猜他们用Meteor更新了吗?
我试过的另一个版本是
Template.loginButtons.events({
'submit #login-form': function(event, template){
...blah blah blah...
Run Code Online (Sandbox Code Playgroud)
但*喘气*也不起作用.它没有给我Uncaught TypeError我原来的代码,但我想它只是无法覆盖正确的处理程序.
为了清楚起见,这是在我的自定义包中运行客户端的所有代码.我的JS文件是我在Telescope中的自定义包的直接子代.
如何覆盖Meteor中的默认登录处理程序?(即我怎么做我的,当你点击的代码运行的"登录"按钮,而不是流星的代码?)
更新:
根据要求,我已经尝试了这个简短的演练中的步骤,其中显示了"扩展流星帐户"的示例.我在客户端的控制台中收到很多错误,在服务器端的控制台中出现一个错误.我得到了正在发生的感觉,因为这个建议特别适用于Telescope,但也许如果我有一个普通的Meteor实例,那就可以了.
实现这一目标的正确方法是像 Telescope 在他们自己的项目中那样做:
首先,将望远镜克隆到您的包目录中,以便您可以自定义它。请注意,Telescope 完全由封装组成。这些是构成该应用程序的核心望远镜模块。我相信您只需编辑以下 2 个模块:telescope-core、 和telescope-users。
在 中telescope-core,登录视图的配置在 中定义packages/telescope-core/lib/config.js。我将在此处添加/删除任何字段,您还可以覆盖模板和重定向。
在 中telescope-users,您可能最感兴趣的是packages/telescope-users/lib/callbacks.js。您可以在此处放置要放入事件处理程序中的代码。
请注意,Telescope 使用自己的自定义库来处理回调,您也必须使用它。幸运的是,这非常简单。您只需使用 添加回调Telescope.callbacks.add(hook, callback)并使用 删除它们Telescope.callbacks.remove(hook, callback)。Telescope.add还提供了异步版本Telescope.runAsync。
您首先要查看现有的回调并删除默认创建帐户的任何内容。您想要寻找的特定钩子很可能是onCreateUser。所以只需在他们的 github 上搜索Telescope.callbacks.add('onCreateUser',... 您需要对它们的集合挂钩执行相同的操作,这些集合挂钩也在同一文件中定义,并根据需要替换它们。
希望这可以帮助。
| 归档时间: |
|
| 查看次数: |
750 次 |
| 最近记录: |