跳轉到內容

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 因此將其與主查詢分開。

華夏公益教科書