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')}",这个主要是用来测试的。看在security.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"这两个条件都满足的话,就可以看到那个文本框了!!

    如果没有target == "insertname"则程序会报错!!

    如果没有action == "insert"则也会看不到文本框!!

 

 

    另外说明一点:这是JPA的高级权限验证的,即没有通过数据库的手工配置而是通过security.drl文件来控制的。如果想通过配置数据库的permission表来控制权限的话,就必须在登录的时候把permission对象加载出来,然后放到WorkingMemory中,这部分的内容在前面的文章里面已经讲过了。!!

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值