Скопируйте файл libmysql.dll из установочного каталога MySQL и вставьте его в каталог bin в каталоге Ruby. Вам может потребоваться загрузить zip-архив из http://dev.mysql.com/downloads/mysql/ , если в каталоге установки MySQL еще нет файла libmysql.dll.
Это большой вопрос, потому что он показывает, как работает модель метеорной безопасности.
Здесь нет проблем с безопасностью, потому что Meteor никогда не доверяет клиентскому коду.
В Meteor, только сервер решает, к каким данным у каждого клиента есть доступ (см. Meteor.publish ) и какие данные может изменять каждый клиент (см. Meteor.allow ) , Когда клиент аутентифицируется на сервере, сервер сохраняет идентификатор пользователя. До тех пор, пока клиент не выйдет из системы, он предоставит этот идентификатор вашим Meteor.publish
и Meteor.allow
функциям на сервере как userId
.
Meteor также отправляет идентификатор пользователя на клиенте, потому что, конечно, вы хотите изменить поведение клиента и то, что отображается на экране, в зависимости от того, кто вошел в систему. И, как вы говорите, мы не можем остановить мошеннического клиента от произвольного изменения любого его кода JavaScript, чтобы изменить то, что он считает идентификатором пользователя! Но выполнение этого не дает клиенту никаких новых разрешений, потому что только код сервера принимает решения по безопасности.
Вы можете попробовать это с помощью приложения безопасных вечеринок:
$ meteor create --example parties
Meteor.userId()
, чтобы получить идентификатор пользователя. Meteor.userId()
новой функцией, которая возвращает желаемый идентификатор. Итак, теперь вы подделали клиента, чтобы он думал, что это ваш пользователь. Но сервер знает лучше. На экране все еще не будет вечеринки, и вы не можете обновить коллекцию вечеринок, чтобы изменить информацию о вечеринке.
Фактически, совершенно безопасно установить идентификатор пользователя клиента на что угодно! Вы можете войти прямо в систему учетных записей и позвонить Meteor.default_connection.setUserId("aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee");
. Попробуйте, и вы увидите, что кнопка входа в правом верхнем углу превращается в анимацию. Это потому, что клиент звонит Meteor.user()
, чтобы показать адрес электронной почты зарегистрированного пользователя, которого вы только что установили. Но поскольку вы не вошли на сервер как этот пользователь, он не публикует никакой информации об этом пользователе, и вы просто получаете спинниг.
Это очень сильная модель безопасности. Вам не нужно беспокоиться о каком-либо клиентском коде, хотя в большинстве приложений именно там живет большая часть кода! Пока вы пишете безопасные методы сервера, публикуете функции и разрешаете / запрещаете правила, вы полностью заблокированы независимо от того, что пытается сделать клиент.