2012-02-02 46 views
3

我有一個應用程序,將除了一對夫婦之外的所有xpages都有匿名訪問。我需要強制用戶登錄這些xpages。是否正在使用beforepageload事件來檢查用戶是否以正確的方式登錄頁面,或者有更好的方法?Xpage認證

回答

7

是的,這將是一個有效的方法來做到這一點,我是如何處理我自己的應用程序的情況。

這是代碼,我使用

if (context.getUser().getCommonName() == "Anonymous"){ 
    sessionScope.put("entryPage",context.getUrl().getPath() + context.getUrl().getQueryString()) 
    context.redirectToPage("/login.xsp"); 
} 

我有這樣的設置來我剛剛從beforePageLoad事件調用一個函數。我正在重定向到另一個XPage,但您也可以重定向到database.nsf?登錄,它將使用服務器上的身份驗證類型設置。

+0

感謝您的回覆。 – user1186272 2012-02-02 23:29:31

+0

沒問題。我的代碼中的sessionScope.entryPage是我可以重定向到強制登錄的原始頁面。 – 2012-02-02 23:31:31

10

最好的解決辦法是將ACL添加到其要求用戶登陸的XPages,那麼你是不是對自己的代碼依賴,但可以讓服務器做爲你工作。

要添加ACL,請轉到XPage的「所有屬性」,然後查找「訪問控制」部分。然後,您可以添加一個或多個配置來定義誰擁有訪問權限 - 例如匿名不能訪問,或人組或角色的訪問等

馬特

4

我完全支持提供了答案:啞光白

最好的解決辦法是添加一個ACL到的XPages

在我的XPages應用程序,我用下面的代碼:

<?xml version="1.0" encoding="UTF-8"?> 
<xp:view xmlns:xp="http://www.ibm.com/xsp/core"> 

    <xp:this.acl> 
    <xp:acl> 
     <xp:this.entries> 
      <xp:aclEntry type="ANONYMOUS" right="READER"></xp:aclEntry> 
      <xp:aclEntry type="DEFAULT" right="EDITOR"></xp:aclEntry> 
     </xp:this.entries> 
    </xp:acl> 
</xp:this.acl> 

...XPage content here... 

</xp:view> 

它表現完美!嘗試一下! )

+0

工程就像一個魅力! – teleman 2017-02-15 18:26:31