JPA上級権限検証のsecurity.drlの書き方


1.UsersEdit.xhtml
<s:decorate id="realnameField" template="../layout/edit.xhtml">
                <ui:define name="label">Realname</ui:define>
                <h:inputText id="realname" required="true"
                           size="50"
                      maxlength="100"
                          value="#{user2.realname}" rendered="#{s:hasPermission('insertname', 'insert')}">
                    <a:support event="onblur" reRender="realnameField" bypassUpdates="true" ajaxSingle="true"/>
                </h:inputText>
</s:decorate>

ここにはrendered=「#{s:hasPermission('insertname','insert')}」があり、これは主にテストに用いられる.見てみろdrlファイルにどのように書くかは、このような条件を満たすことができます.
2. security.drl
rule InsertTest
  no-loop
  activation-group "permissions"
when
  check: PermissionCheck(target == "insertname",action == "insert",granted == false)
  Role(name == "admin")
then
  check.grant();
end

これではadminのユーザのみがこのような権限を持つようになります.またtarget==「insertname」、action=「insert」の2つの条件が満たされなければ、そのテキストボックスが表示されません!!
target=="insertname"がないとプログラムがエラーを報告します!!
action=「insert」がなければテキストボックスも見えません!!
 
 
なお、これは、データベースの手動構成ではなくsecurityを介してJPAの高度な権限検証である.drlファイルで制御されます.データベースのpermissionテーブルを構成して権限を制御したい場合は、ログイン時にpermissionオブジェクトをロードしてWorkingMemoryに置く必要があります.この部分の内容は前の記事ですでに述べています.!!