0_0_21600561_14110\Main.java:11: : GBKIJӳַ
public void clearUserData(GenericValue userLogin);</pre><br />其中?<p></p><p>第一个方法是根据用户Id查询用户权限组;</p><p>第二个方法是check某个安全组是否拥有某个权?</p><p>第三个方法是判断某用户是否拥有某个权限(这里用户的相关信息被封装在session中)</p><p>第四个方法判断用户是否拥有某个实体的操作权限</p><p>第五个方法判断是否拥有某角色的权?</p><p>第六个方法清楚跟用户相关的所有缓存数据(该方法由framework在用户??出登录的时?调用)</p><p>注:上面三个hasXXX 方法都有不同的重?</p><p>再来看看OFBiz中的默认实现(OFBizSecurity.java)中的关键代码:</p><p></p><pre code_snippet_id="239496" snippet_file_name="blog_20140316_3_2770020" code_snippet_id="239496" snippet_file_name="blog_20140316_3_2770020" name="code" class="java">public boolean hasEntityPermission(String entity, String action, GenericValue userLogin) {
^
0_0_21600561_14110\Main.java:11: : GBKIJӳַ
public void clearUserData(GenericValue userLogin);</pre><br />其中?<p></p><p>第一个方法是根据用户Id查询用户权限组;</p><p>第二个方法是check某个安全组是否拥有某个权?</p><p>第三个方法是判断某用户是否拥有某个权限(这里用户的相关信息被封装在session中)</p><p>第四个方法判断用户是否拥有某个实体的操作权限</p><p>第五个方法判断是否拥有某角色的权?</p><p>第六个方法清楚跟用户相关的所有缓存数据(该方法由framework在用户??出登录的时?调用)</p><p>注:上面三个hasXXX 方法都有不同的重?</p><p>再来看看OFBiz中的默认实现(OFBizSecurity.java)中的关键代码:</p><p></p><pre code_snippet_id="239496" snippet_file_name="blog_20140316_3_2770020" code_snippet_id="239496" snippet_file_name="blog_20140316_3_2770020" name="code" class="java">public boolean hasEntityPermission(String entity, String action, GenericValue userLogin) {
^
0_0_21600561_14110\Main.java:11: : GBKIJӳַ
public void clearUserData(GenericValue userLogin);</pre><br />其中?<p></p><p>第一个方法是根据用户Id查询用户权限组;</p><p>第二个方法是check某个安全组是否拥有某个权?</p><p>第三个方法是判断某用户是否拥有某个权限(这里用户的相关信息被封装在session中)</p><p>第四个方法判断用户是否拥有某个实体的操作权限</p><p>第五个方法判断是否拥有某角色的权?</p><p>第六个方法清楚跟用户相关的所有缓存数据(该方法由framework在用户??出登录的时?调用)</p><p>注:上面三个hasXXX 方法都有不同的重?</p><p>再来看看OFBiz中的默认实现(OFBizSecurity.java)中的关键代码:</p><p></p><pre code_snippet_id="239496" snippet_file_name="blog_20140316_3_2770020" code_snippet_id="239496" snippet_file_name="blog_20140316_3_2770020" name="code" class="java">public boolean hasEntityPermission(String entity, String action, GenericValue userLogin) {
^
0_0_21600561_14110\Main.java:11: : GBKIJӳַ
public void clearUserData(GenericValue userLogin);</pre><br />其中?<p></p><p>第一个方法是根据用户Id查询用户权限组;</p><p>第二个方法是check某个安全组是否拥有某个权?</p><p>第三个方法是判断某用户是否拥有某个权限(这里用户的相关信息被封装在session中)</p><p>第四个方法判断用户是否拥有某个实体的操作权限</p><p>第五个方法判断是否拥有某角色的权?</p><p>第六个方法清楚跟用户相关的所有缓存数据(该方法由framework在用户??出登录的时?调用)</p><p>注:上面三个hasXXX 方法都有不同的重?</p><p>再来看看OFBiz中的默认实现(OFBizSecurity.java)中的关键代码:</p><p></p><pre code_snippet_id="239496" snippet_file_name="blog_20140316_3_2770020" code_snippet_id="239496" snippet_file_name="blog_20140316_3_2770020" name="code" class="java">public boolean hasEntityPermission(String entity, String action, GenericValue userLogin) {
^
0_0_21600561_14110\Main.java:11: : GBKIJӳַ
public void clearUserData(GenericValue userLogin);</pre><br />其中?<p></p><p>第一个方法是根据用户Id查询用户权限组;</p><p>第二个方法是check某个安全组是否拥有某个权?</p><p>第三个方法是判断某用户是否拥有某个权限(这里用户的相关信息被封装在session中)</p><p>第四个方法判断用户是否拥有某个实体的操作权限</p><p>第五个方法判断是否拥有某角色的权?</p><p>第六个方法清楚跟用户相关的所有缓存数据(该方法由framework在用户??出登录的时?调用)</p><p>注:上面三个hasXXX 方法都有不同的重?</p><p>再来看看OFBiz中的默认实现(OFBizSecurity.java)中的关键代码:</p><p></p><pre code_snippet_id="239496" snippet_file_name="blog_20140316_3_2770020" code_snippet_id="239496" snippet_file_name="blog_20140316_3_2770020" name="code" class="java">public boolean hasEntityPermission(String entity, String action, GenericValue userLogin) {
^
0_0_21600561_14110\Main.java:11: : GBKIJӳַ
public void clearUserData(GenericValue userLogin);</pre><br />其中?<p></p><p>第一个方法是根据用户Id查询用户权限组;</p><p>第二个方法是check某个安全组是否拥有某个权?</p><p>第三个方法是判断某用户是否拥有某个权限(这里用户的相关信息被封装在session中)</p><p>第四个方法判断用户是否拥有某个实体的操作权限</p><p>第五个方法判断是否拥有某角色的权?</p><p>第六个方法清楚跟用户相关的所有缓存数据(该方法由framework在用户??出登录的时?调用)</p><p>注:上面三个hasXXX 方法都有不同的重?</p><p>再来看看OFBiz中的默认实现(OFBizSecurity.java)中的关键代码:</p><p></p><pre code_snippet_id="239496" snippet_file_name="blog_20140316_3_2770020" code_snippet_id="239496" snippet_file_name="blog_20140316_3_2770020" name="code" class="java">public boolean hasEntityPermission(String entity, String action, GenericValue userLogin) {
^
0_0_21600561_14110\Main.java:11: : GBKIJӳַ
public void clearUserData(GenericValue userLogin);</pre><br />其中?<p></p><p>第一个方法是根据用户Id查询用户权限组;</p><p>第二个方法是check某个安全组是否拥有某个权?</p><p>第三个方法是判断某用户是否拥有某个权限(这里用户的相关信息被封装在session中)</p><p>第四个方法判断用户是否拥有某个实体的操作权限</p><p>第五个方法判断是否拥有某角色的权?</p><p>第六个方法清楚跟用户相关的所有缓存数据(该方法由framework在用户??出登录的时?调用)</p><p>注:上面三个hasXXX 方法都有不同的重?</p><p>再来看看OFBiz中的默认实现(OFBizSecurity.java)中的关键代码:</p><p></p><pre code_snippet_id="239496" snippet_file_name="blog_20140316_3_2770020" code_snippet_id="239496" snippet_file_name="blog_20140316_3_2770020" name="code" class="java">public boolean hasEntityPermission(String entity, String action, GenericValue userLogin) {
^
0_0_21600561_14110\Main.java:31: : GBKIJӳַ
}</pre><br />这是对于hasEntityPermission的最终实现,我们可以看到,它会首先尝试在entity中追加?ADMIN”字符串,也就是说,先查看超级权限,如果拥有超级权限,则直接认为拥有权限,否则才会去查看细粒度的具体权限?<p></p><p></p><pre code_snippet_id="239496" snippet_file_name="blog_20140316_4_3849032" code_snippet_id="239496" snippet_file_name="blog_20140316_4_3849032" name="code" class="java">public boolean hasRolePermission(String application, String action, String primaryKey, List<String> roles, GenericValue userLogin) {
^
0_0_21600561_14110\
|