退出登录
机器翻译
本页由英文原文机器翻译而来,尚未经过母语审校,欢迎在 GitHub 上提出修改。内容如有出入,以英文原文为准。
任务: 结束用户的会话。
yaml
# Recipe: signing out clears the session; the protected page is closed again.
paths:
components: ./components1
2
3
2
3
xml
<q:component name="Home" require_auth="true">
<h1>Hello, {session.userName}</h1>
<a href="/logout">Sign out</a>
</q:component>1
2
3
4
2
3
4
页面可以修改会话然后重定向:它在 q:redirect 之前写入会话的内容会保留下来。
xml
<q:component name="Logout">
<!-- A page that clears the session and redirects (ACT-7). -->
<q:set name="session.authenticated" value="false" type="boolean" />
<q:set name="session.userName" value="" />
<q:set name="session.userRole" value="" />
<q:redirect url="/login" flash="You are signed out." />
</q:component>1
2
3
4
5
6
7
2
3
4
5
6
7
xml
<q:component name="Login">
<q:if condition="flash"><p>{flash}</p></q:if>
<h1>Sign in</h1>
</q:component>1
2
3
4
2
3
4
测试先登录,再退出,然后检查首页再次要求登录:
xml
<q:test name="signing out ends the session" page="/">
<test:as user="ana" role="member" />
<test:visit />
<test:expect text="Hello, ana" />
<test:visit path="/logout" />
<test:expect status="302" redirect="/login" />
<test:expect text="You are signed out." />
<test:visit path="/" />
<test:expect status="302" redirect="/login" />
</q:test>1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
text
tests/logout.test.q
PASS signing out ends the session
1 passed, 0 failed1
2
3
2
3