Spring Webflow:保护个人绑定

时间:2016-03-14 11:01:47

标签: spring spring-webflow

因此,我在各种流定义中实现了<binder>,以便保护流中每个页面绑定到模型的内容。因此,<binder>部分可能如下所示:

<binder>
    <binding property="name" />
    <binding property="departmentId" />
    <binding property="phoneNumber" />
    <binding property="qualificationOverride" />
</binder>

我的问题是我不希望“qualificationOverride”绑定到模型,除非用户具有指定的角色(ROLE_MANAGER)。

有人有什么想法吗?

杰森

1 个答案:

答案 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>