2011-04-25 87 views
2

我在netbeans rcp中遇到登錄屏幕問題。需要驗證對話框

服務器側:glassfish的v 3.1,EJB和HessianServlet與在web.xml基本認證

客戶端:netebeans RCP 7.0和服務器端API。

在服務器使用的自定義域和客戶端初始屏幕之後提供用戶名和密碼,在自定義登錄面板乳寧上DialogDescriptor的頂部

登錄面板代碼:

public class Installer extends ModuleInstall { 
... 
    @Override 
    public void restored() { 


    DialogDescriptor loginDialog = new DialogDescriptor(panel, "Login Dialog"); 
    loginDialog.setModal(true); 


    loginDialog.setClosingOptions(new Object[]{}); 
    loginDialog.setOptions(new Object[]{}); 

    loginDialog.setButtonListener(al); 

    loginDialog.addPropertyChangeListener(new PropertyChangeListener() { 

     @Override 
     public void propertyChange(PropertyChangeEvent evt) { 
      if (NotifyDescriptor.CLOSED_OPTION.equals(evt.getNewValue())) { 
       LifecycleManager.getDefault().exit(); 
      } 
     } 
    }); 

    DialogDisplayer.getDefault().notifyLater(loginDialog);  
... 
} 

此登錄面板簡單地調用一個服務器端的安全方法,如果不發生異常並且返回String []包含用戶名和Surname,則登錄屏幕配置和rcp顯示給客戶端。

在登錄面板

HessianProxyFactory proxy= new HessianProxyFactory(); 
    proxy.setUser(user); 
    proxy.setPassword(password); 

LoginObject loginObject = xxx.create(LoginObject .class, "<a href="http://localhost:port/trali/vali">http://localhost:port/trali/vali"); 

String[] value=loginObject .isAppUser("login name"); 


if(value==null){ 

//message login failed 

}else { 

//dispose login screen and show main app 

} 

一切正常,直到客戶端提供正確的用戶名和密碼,但如果登錄上 服務器的Netbeans RCP彈出窗口驗證zhcon失敗需要對話就像在Web瀏覽器中 基本身份驗證對話框。

dialog

如何禁用此對話框?

在此先感謝!

回答

1

您可以使用方法Authenticator.setDefault(Authenticator)覆蓋此對話框。

如果您確實嘗試禁用身份驗證,則通過重寫默認身份驗證器,您需要在客戶端代碼中考慮這一點......因爲您可能會收到「未經授權」響應流。

+0

我設置Authenticator.setDefault(空)和彈出消失停用代理配置。我在服務器嘗試401塊錯誤。如果從顯示給用戶「用戶名/密碼不正確」的服務器消息返回的此類錯誤代碼 – dimitri 2011-04-26 08:04:51

2

工具>選項>常規 代理服務器設置:無代理 [OK]

這將停止代理身份驗證(FTP/SFTP)彈出。或者將你的代理設置設置爲有效的東西。

0

通過轉到工具 - >選項 - >常規 - >無代理