2013-06-15 50 views
7

Bir JavaScript ön uç uygulamam varsa, izinleri/ACL'yi işlemek için en iyi/yaygın uygulama nedir. Örneğin, bazı unsurları göstermek/gizlemek istiyorum. Tabii ki, güvenli değil, ama hala görüş katmanında, bunu nasıl kontrol edebilirim.Bir JavaScript İstemcisi'nde İzinler/ACL İstemci Uygulaması

Öyle jQuery kullanarak, bir istemci tarafı çerçeve olarak (Marionette ile) backbone.js kullanıyorum, Underscore vb

Ben yüksek düzeyde düşünüyorum, ben bir şekilde bazı yolları devre dışı bırakmayı deneyebilirsiniz. Biraz araştırma gerekiyor ama ben Router.on("route", checkPermissions) yapabilirim. Daha sonra görünüm katmanında, öğeleri gizlemek/göstermek için ... hala bunun nasıl en iyi şekilde kullanılacağından emin değilsiniz. Aşağıdaki

<% if (user.isInRole('ADMIN', 'MNGR')) { %> 
    <li <% page == "store" ? print('class="active"') :'' %>> 
    </li> 
<% } %> 

ve ekledi: Ben,

cevap

1

Veri katmanından erişilemeyen öznitelikleri kaldıracak değiştirilmiş ayrıştırma mantığına sahip özel BaseModel/BaseCollection sınıfları oluşturdum. Daha sonra bu veri gizleme mantığını sunucu tarafına şeffaf bir şekilde aktarabilir ve üretim değeri güvencesi elde edebilirsiniz.

İzin verilince, Model/Koleksiyon sınıflarına ilişkin _security özniteliği bildirmek için iyi bir yer olabilir.

görünümlerinde

, akoskm istemci tarafı kötü bir fikir üzerinde hassas veri özelliklerini dışarı Ayrıştırma

+1

önerdiği gibi koşullu mantığı kullanır. Hassas veriler, kullanıcının görmesine izin vermediği sürece sunucuyu asla terk etmemelidir. –

6

Şablonumdaki satır içi kontroller yapmak ekranda görünür/gizli elemanları yapmak için ... modeli nesne bir bazı izinlere geçmek gibi bir şey gerekiyor benim kullanıcı modelinin iç yardımcı işlevi izinleri denetlemek için: gerekli izin fiili onay sunucu tarafında daha olursa beri

isInRole: function (rr) { 
    var self = this; 
    $.each(rr, function(i) { 
     if (rr[i] === self.currentRole) { 
      alert('pass'); 
     } 
    }); 
} 

Ben, bu güvenli yeterince olduğunu varsayalım. Bazı kontrolleri saklıyorum, sadece kullanıcıya uygulama boyunca rehberlik ediyorum ve gerekli ayrıcalıklara sahip olmaması için ona şaşkınlık getirmesine izin vermem.

Böyle bir yaklaşımla, sayfanın yalnızca statik öğesi olan REST hizmetlerinden dinamik olarak gelen verileri saklıyorum .