Sansür, bir toplumun kendine olan güvensizliğini yansıtır ve otoriter rejimlerin belirgin bir özelliğidir.

--Potter Stewart

22.03.2012

PrimeFaces ve Security Kullanımı

Web projelerinde güvenlik olmazsa olmaz özelliklerden biri. Bu özelliği basitçe web.xml içerisinden yapılan güvenlik ayarlarıyla sunucunuz yardımıyla sağlayabileceğiniz gibi Spring Security benzeri çözümler de sundukları seçeneklerle daha çok tercih edilir durumda.

Her ne kadar erişim ayarları yapılırken tüm içeriğin giriş yapmayan kullanıcı için kısıtlanması tercih edilen yöntem ise de başta "giriş sayfası" olmak üzere benzer sayfalara ve bunların kullandığı kaynaklara erişim izni verilmesi gerekir. Giriş sayfasında PrimeFaces bileşeni kullanıyorsanız sayfanızın erişmeye çalışacağı ve erişim izni olmadığı için de kullanamayacağı başlıca adres "/javax.faces.resource/*" olacaktır.

PrimeFaces ile yazılmış bu gibi sayfaların kullanıcı giriş yapmadan düzgün bir şekilde görüntülenmesi için yukardaki adresin güvenlik ayarlarınızda erişime açılmış olması gerekmektedir.

web.xml içerisinde örnek bir güvenlik kısıtlaması şu şekilde yapılmalıdır:

 <security-constraint>
  <display-name>excluded</display-name>
  <web-resource-collection>
   <web-resource-name>All Access</web-resource-name>
   <url-pattern>/javax.faces.resource/*</url-pattern>
  </web-resource-collection>
 </security-constraint>
 
 <security-constraint>
  <display-name>Default Security Constraint</display-name>
  <web-resource-collection>
   <web-resource-name>Default</web-resource-name>
   <url-pattern>/*</url-pattern>
  </web-resource-collection>
  <auth-constraint>
   <role-name>ROLE_ADMINISTRATOR</role-name>
  </auth-constraint>
 </security-constraint>

Aynı şekilde Spring Security kullandığınız bir projede erişim ayarları şu şekilde yapılabilir:

        <intercept-url pattern="/javax.faces.resource/**" filters="none" />
        <intercept-url pattern="/**" access="ROLE_ADMINISTRATOR" />

Erişim kısıtlarını kendi geliştirdiğiniz bir yöntemle ele alıyorsanız PrimeFaces sayfaları için bu hususu umutmamanızda fayda var..

21.03.2012

JSF'te ActionListener / Action Çağrılma Sırası

JSF'e yeni başlayan birinin gün olur aklına düşen bir sorudur: commandButton ile ilişkilendirdiğim actionListener'lar ve action hangi sırada çağırılır.

Öncelikle, hatırlatma niteliğinde;

- Bir command bileşenine birden fazla actionListener yazabiliyorken sadece bir action yazabileceğinizi
- action ile bağlanan metotta döndürdüğünüz String ile sayfa yönlendirme işlemi yapabileceğinizi (void ya da "return null;" olursa aynı sayfada kalır) fakat actionListener metotlarında bu özelliğin olmadığını
- actionListener metodunun "ActionEvent" parametresi alabileceğini, action'a bağlanan metota ise el-2.2.jar'dan itibaren Expression Language ile istediğiniz parametreyi geçebileceğinizi

belirteyim.

Çağırılma sırasını ise Yiğit Darçın bizim için hemencecik test etmiş ve blogunda yayınlamış. Test edip deneyimlemekten üşenenler faydalanabilir ;)