XQuery/登入和登出
外觀
< XQuery
您希望將使用者登入到系統並將其登出。
我們將使用以下函式來建立登入和登出表單
xmldb:login($collection, $user, $password, true()) session:create() session:invalidate()
要登入,我們首先需要建立一個新會話,然後使用此會話來儲存我們的登入資訊
session:create() xmldb:login($collection, $user, $password, true())
這會更改執行當前查詢的有效使用者,並將該使用者資訊儲存到 HTTP 會話中,因此同一會話中的後續查詢也將使用相同的使用者許可權執行。請注意,您必須使用“true()”作為登入函式的第四個引數。
要登出使用者,請使用
session:invalidate()
以及 session:clear 將刪除會話中的使用者繫結,這意味著對查詢的下一個呼叫將作為訪客執行。但是,正在執行的查詢將繼續使用舊的非訪客使用者,直到它完成。
(: if we are already logged in, are we logging out - i.e. set
permissions back to guest :)
if(request:get-parameter("logout",()))then
(
let $null := xdb:login("/db", "guest", "guest")
let $inval := session:invalidate()
return false()
)
else
(
(: we are already logged in and we are not the guest user :)
true()
)
在此示例中,我們同時呼叫 xdb:login() 作為訪客和 session:invalidate()。我們希望同時執行這兩項操作,清除未來查詢的會話以及重置查詢其餘部分的當前使用者。
您還可以透過更改 Jetty 配置檔案來更改預設超時設定
$EXIST_HOME/tools/jetty/etc/webdefault.xml
預設情況下,配置檔案將會話超時設定為 30 分鐘
<session-config>
<session-timeout>30</session-timeout>
</session-config>
注意
將來可能會有 xmldb:logout 函式,它將這兩個步驟結合起來。另一種方法是在控制器中處理登入/登出。xql 因此將其與主查詢分開。