2015-04-03 52 views
1

我很困惑我應該如何驗證登錄的用戶。我正在考慮從無狀態bean調用有狀態bean,但我讀了這個主題access existing instance stateful inside stateless, java ee 6如何獲取登錄用戶無狀態的信號

這是我的想法。

ProductBean.java

@Stateless 
@LocalBean 
public class ProductBean { 
    @EJB private UserBean userBean; // UserBean is SFSB 
    public Product addProduct(Product product) { 
     if(userBean == null || userBean.getLoggedInUser() == null) { 
      // throw an exception 
     } 
     // persist 
    } 
} 

ProductController.java

@ManagedBean 
@RequestScope 
public class ProductController { 
    @EJB private ProductBean productBean; 
    private Product product; 
    public void addProduct() { 
     Object result = productBean.addProduct(productBean); 
    } 
} 

預先感謝您。 :)

回答

2

如果你想保護你的豆你應該寧願使用Java EE的安全機制,例如@RolesAllowedsessionContext.getCallerPrincipal(),而不是創建自己的機制。如果您將在Web模塊中進行適當的身份驗證,則安全上下文將傳播到EJB。

有狀態的bean不是很好的主意,特別是在你的設計中。不能在無狀態bean中使用有狀態bean,因爲無狀態bean實例在不同的調用/用戶之間重複使用。

+0

感謝您的回覆,我將閱讀有關會話上下文的文章。你有建議在這個領域的初學者的教程網站? – bell 2015-04-03 13:30:50

+0

@bell看看在他的答案中發佈的[endriu_l](http://stackoverflow.com/a/29427706/3701228)中的Java EE教程鏈接,它顯示了所有這些。 – Gas 2015-04-03 15:43:20

0

關於保護豆 - 您應該使用javax.ejb.SessionContext獲取主要信息或檢查特定角色並從那裏開始。

有在安全方面的一些很好的例子甲骨文的Java EE 6 tutorial

相關問題