因此,我在各种流定义中实现了<binder>
,以便保护流中每个页面绑定到模型的内容。因此,<binder>
部分可能如下所示:
<binder>
<binding property="name" />
<binding property="departmentId" />
<binding property="phoneNumber" />
<binding property="qualificationOverride" />
</binder>
我的问题是我不希望“qualificationOverride”绑定到模型,除非用户具有指定的角色(ROLE_MANAGER)。
有人有什么想法吗?
杰森
答案 0 :(得分:1)
你可以做的就是不绑定它,并在提交时从requestParameters获取值,然后进入决策状态,你可以使用secure来检查权限并设置值。
类似的东西(我没有测试过):
<view-state id="view" model="model">
<binder>
<binding property="name" />
<binding property="departmentId" />
<binding property="phoneNumber" />
<!--<binding property="qualificationOverride" />-->
</binder>
<transition on="submit" to="bindIfManager">
<set name="flowScope.qualificationOverride" value="requestParameters.qualificationOverride/>
</transition>
</view-state>
<action-state id="bindIfManager">
<!-- you will have to implement this, basically user.getAuthorities.contains(new SimpleGrantedAuthority(role))-->
<evaluate expression="securityAction.isUserInRole(currentUser, 'ROLE_MANAGER')"/>
<transition on="yes" to="finish">
<set name="model.qualificationOverride" value="flowScope.qualificationOverride"/>
</transition>
<transition on="no" to="finish"/>
</action-state>