# 8.4　保护 Web 流程

在下一章中，我们将会看到如何使用 Spring Security 来保护 Spring 应用程序。但现在我们讨论的是 Spring Web Flow，让我们快速地看一下 Spring Web Flow 是如何结合 Spring Security 支持流程级别的安全性的。

Spring Web Flow 中的状态、转移甚至整个流程都可以借助 `<secured>` 元素实现安全性，该元素会作为这些元素的子元素。例如，为了保护对一个视图状态的访问，你可以这样使用 `<secured>`：

```markup
<view-state id="restricted">
  <secured attribute="ROLE_ADMIN" match="all" />
</view-state>
```

按照这里的配置，只有授予 ROLE\_ADMIN 访问权限（借助 attributes 属性）的用户才能访问这个视图状态。attributes 属性使用逗号分隔的权限列表来表明用户要访问指定状态、转移或流程所需要的权限。match 属性可以设置为 any 或 all。如果设置为 any，那么用户必须至少具有一个 attributes 属性所列的权限。 如果设置为 all，那么用户必须具有所有的权限。你可能想知道用户如何具备 `<secured>` 元素所检验的权限，甚至最开始的时候用户是如何进行登录的？这些问题的答案将在第 9 章给出。
