J'essaie de comprendre comment cacher le code secret d'un client dans Meteor Methods. The docs seem to imply que ce qui suit est un schéma général de la façon dont cela est fait. https://guide.meteor.com/structure.html#using-requireMasquer le code secret du serveur appelé par Meteor Methods
(Notez que, selon les documents, j'utilise require
au lieu d'importation, puisque import
ne peut pas être utilisé dans un bloc conditionnel.)
Tout d'abord, voici une méthode définie dans un fichier appelé methods.js
et importés à la fois sur le client et le serveur:
/* methods.js */
let ServerCode
if (Meteor.isServer) {
ServerCode = require('/imports/server-code.js')
}
Meteor.Methods({
'myMethodName': function() {
// ... common code
if (Meteor.isServer) {
ServerCode.secretFunction()
}
// ... common code
}
})
en second lieu, voici le code du serveur secret /imports/server-code.js
que je suis en train de ne pas envoyer au client:
/* server-code.js */
class ServerCode {
secretFunction() {
console.log('TOP SECRET!!!!')
}
}
const ServerCodeSingleton = new ServerCode()
module.exports = ServerCodeSingleton
Mais quand j'examine la source envoyé vers le navigateur client, je vois toujours mon code serveur secret, être envoyé au client:
Même quand je fais une production construire, je peux encore chercher et trouver que «TOP SECRET !! chaîne. J'ai l'impression d'être trop naïf dans ma compréhension de la façon dont fonctionne require
, mais les docs de Meteor le font paraître si simple. Alors, quelle est la bonne façon de cacher le code secret qui est appelé de Meteor Methods?
Pas besoin de créer 'Meteor.methods ({/*...*/})' dans les dossiers "partagés" (isomorphes). 'Meteor.methods ({/*...*/})' est exécuté uniquement sur le serveur et doit être placé dans le répertoire 'server', - pour des raisons de sécurité –
Non, ce n'est pas correct. –
Lire les ['methods' docs] (https://docs.meteor.com/api/methods.html#Meteor-methods). Les méthodes d'appel sur le client définissent les fonctions __stub__. –