วันพุธที่ 20 กรกฎาคม พ.ศ. 2554

taglib Authorization by spring security on spring3 richfaces4 jsf2

ในส่วน authorization นี้ พูดในเรื่องของ tag ที่ใช้ในการกำหนดสิทธิ บนหน้า web เป็นหลัก โดยต่อยอดมาจากบนความก่อนหน้าในเรื่อง authentication

authentication by spring security on spring3 richfaces4 jsf2

สิ่งสำคัญในของหน้าที่ authorization คือ การให้สิทธิ ที่ไม่เท่าเทียมกันของ ผู้เข้ามาใช้ระบบ ซึ่ง บางคนสามารถทำการสร้างลบข้อมูลได้ ส่วนบางคน ควรจะมีหน้าที่ดู เพื่อรับข้อมูลอย่างเดียว เป็นต้น

ในที่นี้ ต่อจากหน้า login.xhtml ในคราวที่แล้ว ให้เราสร้างหน้า home.xhtml ขึ้นมา

== home.xhtml ==
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:a4j="http://richfaces.org/a4j"
      xmlns:rich="http://richfaces.org/rich"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:sec="http://www.springframework.org/security/facelets/tags">
   
   status : 
   <sec:isAnonymous > anonymous user -_- </sec:isAnonymous > 
   <sec:isAuthenticated > authenticate user ^_^ </sec:isAuthenticated > 
   
   role : 
   <sec:ifNotGranted roles="ROLE_ADMIN">not admin</sec:ifNotGranted >
   <sec:ifAnyGranted roles="ROLE_ADMIN">admin</sec:ifAnyGranted >
   
   <sec:ifAllGranted roles="ROLE_ADMIN, ROLE_USER">both role (user, admin)</sec:ifAllGranted >
   
</html>

ในส่วนนี้เป็นตัวอย่างง่าย ๆ คือ เราต้องประกาศ

xmlns:sec="http://www.springframework.org/security/facelets/tags"

ขึ้นมาก่อน เพื่อใช้ tag ในการทำเรื่อง authorization ได้
หลังจากนั้น เราก็ใช้งาน หลักการง่าย ๆ คือ ถ้า roles ที่กำหนดไว้ ตรงกับ ชื่อ sec:? นั้น ก็จะทำการแสดงข้อความที่อยู่ด้านใน tag sec:? นั้นๆ ได้ โดยในที่นี้ ลองดูมีอยู่ 5 tag ได้แก่


<sec:isAnonymous />

ใช้เพื่อถามว่าเป็น บุคคลทั่วไป หรือเปล่า

<sec:isAuthenticated />

ใช้เพื่อถามว่าเป็น บุคคลในระบบ หรือเปล่า

<sec:ifAllGranted roles="?" />

ใช้เพื่อถามว่าเป็น บุคคลที่อยู่ในตำแหน่งต่าง ๆ เหล่านี้ทั้งหมดหรือเปล่า

<sec:ifNotGranted roles="?" />

ใช้เพื่อถามว่าเป็น บุคคลที่ไม่ได้อยู่ในตำแหน่งต่าง ๆ เหล่านี้ทั้งหมดหรือเปล่า

<sec:ifAnyGranted roles="?" />

ใช้เพื่อถามว่าเป็น บุคคลที่อยู่ในตำแหน่งใดตำแหน่งหนึ่ง ในที่นี้หรือเปล่า

ไม่มีความคิดเห็น: