اذهب إلى المحتوى

السؤال

نشر

أحاول الاتصال بخادم خارجي يحوي قاعدة البيانات mongodb، وبما أن الاتصال سيكون على الشكل التالي:

mongodb://username:password@host:port/database

لقد قمت بإضافة اسم المستخدم، ولكن المشكلة بأن كلمة المرور تحوي الإشارة @ أيضاً. وعندما قمت بإضافة @ ضمن كلمة المرور ظهر لي عدة أخطاء بسبب ذلك.

كيف يمكنني وضع كلمة المرور التي تحوي محارف وإشارات ومنها @ ضمن الاتصال؟

Recommended Posts

  • 0
نشر

يمكنك استبدال الإشارات في حال وجودها ضمن اسم المستخدم أو كلمة المرور بالترميز الذي يدل عليها.

على سبيل المثال، يمكنك كتابة الرمز (%40) بدلاً من @ ضمن كلمة المرور فيصبح الاتصال على الشكل التالي:

//بفرض كلمة المرور هي my@password

mongoClient.connect("mongodb://username:my%40pssword@host:port/dbname?authSource=admin", { 
        useNewUrlParser: true
    }, function(err, db) {

    }
);

وفي حال كنت تستخدم node.js يجب عليك أيضاً تمرير التالي ضمن تابع الاتصال:

{uri_decode_auth: true}

أما الاتصال عن طريق mongoose فمكن أن يتم بالشكل التالي:

mongoose.connect('mongodb://localhost/mydatabase',
                 {user: 'usr', pass: 'any@password@'},
                 callback);

 

  • 0
نشر

يمكن استعمال الدالة : encodeURIComponent لتخطي مشكلة الترميز

const dbUrl = `mongodb://adminUsername:${encodeURIComponent('adminPassword')}@localhost:27017/mydb`;

وفي حال استخدامها لنفس الدالة مع mongose سنضطر لتمرير الخيار 

useNewUrlParser: true,

 

بهذه الدالة سيتم تخطي كافة المحارف الخاصة

  • 0
نشر

إذا كان لديك رمز @ أو غيرها من الرموز فيجب عليك ترميزها أي إستبدالها بالأرقام الخاص بها ويمكنك تحويل كلمة السر من هنا

ومن ثم إستبدال الرموز ووضع الأرقام الخاصة بها 

اما إذا كنت تستخدم MongoClient

MongoClient = require('mongodb').MongoClient;
let options = {
    useNewUrlParser: true,
    auth: {
        user: 'usr',
        password: 'p@sswrod'
    }
};
MongoClient.connect(url, options, callback);

وايضاً يمكنك إستخدام حزمة mongodb-uri كالآتي

const mongoose = require('mongoose')
const mongodbUri = require('mongodb-uri')
let mongooseUri = mongodbUri.formatMongoose(config.mongo.uri)
mongoose.connect(mongooseUri, config.mongo.options)

 

وهذه هي الرموز الذي يجب عليك ترميزها

: / ? # [ ] @

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...