2016-12-12 5 views
-1

In Backbone.js verwenden wir einen Router, um ein URL-Format anzugeben und die Seite anzugeben, auf die umgeleitet werden soll.So verschlüsseln Sie eine URL in backbone.js

Zum Beispiel:

"serviceslist/:id/:serviceId": "serviceslist", 

serviceslist: function(id, serviceId) { 
    var self = this; 
    this.load(); 
    require([ 
     'js/views/patient/serviceslist' 
    ], function(serviceslist) { 
     self.shell(); 
     if (typeof app.serviceslist !== 'undefined') { 
      app.serviceslist.destroy(); 
     } 
     app.serviceslist = new serviceslist({ Id: id, fromouter: false, serviceId: serviceid }); 
     $("#main-nav li.active").removeClass("active"); 
     $("#admin").addClass("active"); 
    }); 
}, 

nennen wir in js:

Backbone.history.navigate('#/serviceslist/1456/false/1111', { trigger: true }); 

der Link wird:

http://localhost:64865/#/serviceslist/1456/false/1111 

Gibt es eine Möglichkeit, diesen Teil der URL zu verschlüsseln: 1456/false/1111?

+0

Da Backbone clientseitig ist, ist jede Verschlüsselung sinnlos, da alles bereits in der Hand des Benutzers liegt, bevor eine Operation ausgeführt werden kann. Meinst du wirklich Verschlüsselung und nicht Codierung? –

Antwort

0

Verwenden Sie encodeURIComponent auf Ihrer Route Teile, die maskiert werden müssen.

Beispiel:

console.log(encodeURIComponent('Time &time=again')); 
 
console.log('#/serviceslist/' + encodeURIComponent('1456&123/456') + '/false/1111')

Also Ihr navigate Code könnte sein:

var id = '1456/false'; 
var serviceId = '1111'; 

Backbone.history.navigate('#/serviceslist/' + encodeURIComponent(id) + '/' + encodeURIComponent(serviceId), { trigger: true }); 

Möglicherweise müssen Sie es auf dem Router obwohl entschlüsseln:

serviceslist: function (id,serviceId) { 
    // decode the route params :id & :serviceId 
    id = decodeURIComponent(id); 
    serviceId = decodeURIComponent(serviceId); 
    // the rest of your logic here 
} 
+0

Diese Methode encodeURIComponent verschlüsselt keine int-Werte: S – Lili

+1

Oh ... Ich verstehe ... Sie brauchen einen Weg, um es vor den Benutzern zu "verstecken". Sie müssen dies auf eine andere Art und Weise verschleiern, aber letztendlich sind diese IDs so sensibel? Vielleicht müssen Sie etwas anderes verwenden, wenn Sie nicht möchten, dass die Benutzer versuchen, die IDs zu erraten, wenn Sie danach suchen. Verwenden Sie zum Beispiel eine "slug" alias eine generierte Zeichenfolge, die auf dem Namen des Dienstes basiert, und nicht auf der ID des Dienstes. zB: mein-aswsome-service-one, mein-awesome-service-zwei. Diese sollten eindeutig sein, damit Sie den Datensatz abrufen und seine ID finden können. Und natürlich auf dem Backend gespeichert – Andy

+0

@Lili Diese Antwort bietet eine Möglichkeit zu verschlüsseln, die keine Verschlüsselung ist. –

Verwandte Themen