Я использую NPM ldapjs и этот Проект Meteor LDAP, чтобы попытаться включить LDAP на моем тестовом веб-сайте Telescope. Основная проблема заключается в том, что я хочу, чтобы LDAP был единственным методом входа в систему. Мой план состоит в том, чтобы иметь оболочку для встроенного метода входа в систему Telescope (Meteor?). Если учетные данные LDAP проходят успешно, он запускает сценарий входа в систему Telescope и продолжает работу в обычном режиме.
Возможно, это хакерское решение, и существует лучшее? В любом случае мне нужен 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');
});
}
});
Как говорится в комментарии, команда журнала никогда не запускается (я знаю, потому что использую 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
Строка 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...
но *вздыхает* и это не работает. Это НЕ дает мне Uncaught TypeError
, которое я получаю с исходным кодом, но я думаю, что он просто не перезаписывает правильный обработчик.
Просто для ясности, это весь код, который выполняется на стороне клиента в моем пользовательском пакете. Мой файл JS является прямым дочерним элементом пользовательского пакета, который у меня есть в Telescope.
Как перезаписать обработчик входа по умолчанию в Meteor? (т.е. как мне заставить мой код запускаться, когда вы нажимаете кнопку "войти" вместо кода Meteor?)
Обновление:
По запросу я выполнил действия, описанные в этом кратком пошаговом руководстве, в котором показан пример "Расширения учетных записей Meteor". Я получаю много ошибок в консоли на стороне клиента и одну ошибку в консоли на стороне сервера. У меня такое ощущение, что это происходит, потому что это предложение не очень хорошо работает конкретно с Telescope, но, возможно, если бы у меня был старый добрый экземпляр Meteor, это сработало бы.
Template.XXX.events
относится к имени шаблона, для которого вы хотите записывать события. Как называется ваш шаблон входа? например для<template name="Login"><form id="loginForm">...login form...</form></template>
. Вы бы сделалиTemplate.Login.events({'submit #loginForm': function (event, template) { ...your code here... });
- person Michael Mason   schedule 25.07.2015