2010-10-26 18 views
5

CR XI'yi Oralce üzerinde kullanıyoruz. DB'de RLS (Satır Düzeyinde Güvenlik) uyguluyoruz. RLS, hangi veri satırlarının veri kümesinde görünebileceğine karar vermek için, oturumda belirlediğimiz bilgileri temel alır (trans_pkg.set_username ('abc')). Ancak CR'nin Oracle ile olan bir bağlantısı var gibi görünüyor. CR sorgusu verisinden önceki gibi bir paket çalıştırmak için hiçbir yolumuz yoktur: trans_pkg.set_username ('abc'). Artık sistemimiz için büyük güvenlik riski var. Herhangi bir sorunuz varsa lütfen bana yardım edin.Crystal Report ve ODP.Net

+1

Crystal Report'a güç vermek için kullanılan Oracle saklı yordamında 'trans_pkg.set_username ('abc')' deyişine ne dersiniz? –

+0

Bunu mu demek istediniz: CR komutunu select trans_pkg.set_username ('abc') 'den dual ye çevirmek istiyor musunuz? CR'de birçok sorumuz varsa, her sorgu aynı Oracle oturumunu kullanır veya kendi başına mı oluşturur? – QuangND

+0

Merhaba OMG Ponies, sorgunuz trans_pkg.set_username ('abc') seçeneğini çift sorgulamadan tüm sorgularda ilk olarak seçerse çözümün doğrudur. Ancak, bu sorgunun her zaman ilk önce çalıştığından nasıl emin olunur? – QuangND

cevap

0

Oracle'ın yalnızca sql sunucusuna karşı kristal kullanmadım, ancak yanıt aynı olmalıdır. Rapor için bağlantı bilgilerini ayarladığınızda, kullanıcı adını ve şifresini belirtmeniz gerekir. Veritabanı, kullanıcıyı tanımlamak ve doğru erişim izinlerini atamak için bu bilgiyi kullanmalıdır.

+0

Yanıtladığınız için teşekkürler Sistemimiz 3 katlıdır, kullanıcı Veritabanı tüm oturumlar için aynıdır. Tek yol, verileri sorgulamadan önce bazı prosedürleri yürütmektir. Herhangi bir öneri? – QuangND

+0

db'de bir 'saklı prosedürü' veya veri erişim katmanınızdaki bir prosedürü çalıştırmayı mı kastediyorsunuz? Her durumda, prosedür ne yapar? – Ray

+0

saklı yordamı yürütün. bir trans_pkg paketimiz var. Bu pakette, global bir değişken g_username var. trans_pkg.set_username (p_username varchar2) sadece g_username: = p_username; ve RLS bağlamında yalnızca bu kullanıcı adının erişebileceği satırları filtreleriz. – QuangND

0

size sadece

this answer yılında bir BO Sunucusu kullanılarak olsaydı olarak DataSets kullanabilirsiniz yerine BO Server kristal rapor görüntüleyici kullanıyorsanız öncelikle aramalar ayarlar başka prosedür oluşturmak gerekir yana kullanıcı adı ve ardından rapor kaynak prosedürünü veya sorguyu yürütün.

+0

Sistemimizde, kullanıcı yeni rpt dosyaları oluşturabilir ve rapor sunucusuna yükleyebilir ve diğerleri bu raporları görüntüleyebilir. Bir rpt dosyasında, çeşitli sorgular vardır. Bence bu yaklaşımı bu durumda kullanabiliriz. – QuangND

+0

:) Üzgünüz, bu forumda yeniyim. Bunu yapmanın yolunu bulacağım :) – QuangND