> For the complete documentation index, see [llms.txt](https://potoyang.gitbook.io/spring-in-action-v4/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://potoyang.gitbook.io/spring-in-action-v4/untitled-3/untitled-2/untitled.md).

# 9.4.4　退出

其实，按照我们的配置，退出功能已经启用了，不需要再做其他的配置了。我们需要的只是一个使用该功能的链接。

退出功能是通过 Servlet 容器中的Filter实现的（默认情况下），这个 Filter 会拦截针对 “/logout” 的请求。因此，为应用添加退出功能只需添加如下的链接即可（如下以 Thymeleaf 代码片段的形式进行了展现）：

```markup
<a th:href="@{/logout}">Logout</a>
```

当用户点击这个链接的时候，会发起对 “/logout” 的请求，这个请求会被 Spring Security 的 LogoutFilter 所处理。用户会退出应用，所有的 Remember-me token 都会被清除掉。在退出完成后，用户浏览器将会 重定向到 “/login?logout”，从而允许用户进行再次登录。 如果你希望用户被重定向到其他的页面，如应用的首页，那么可以在 configure() 中进行如下的配置：

```java
@override
protected void configure(HttpSecurity http) throws Exception {
  http
    .formLogin()
    .loginPage("/login");
    .and()
    .logout()
    .logoutSuccessUrl("/")
    ...
}
```

在这里，和前面一样，通过 add() 连接起了对 logout() 的调 用。logout() 提供了配置退出行为的方法。在本例中，调用 logoutSuccessUrl() 表明在退出成功之后，浏览器需要重定向到 “/”。

除了 logoutSuccessUrl() 方法以外，你可能还希望重写默认的 LogoutFilter 拦截路径。我们可以通过调用 logoutUrl() 方法实现这一功能：

```java
.logout()
.logoutSuccessUrl("/")
.logoutUrl("/signout");
```

到目前为止，我们已经看到了如何在发起请求的时候保护 Web 应用。这假设安全性主要涉及阻止用户访问没有权限的 URL。但是，如果我们能够不给用户显示其无权访问的连接，那么这也是一个很好的思路。接下来，我们将会看一下如何添加视图级别的安全性。
