Я смущен тем, как я должен проверять зарегистрированного пользователя. Я думал о вызове bean-компонента из состояния без состояния, но я прочитал эту тему, доступ к существующему экземпляру stateful внутри апатрида, 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);
}
}
Заранее спасибо. :)
Если вы хотите защитить свои компоненты, лучше использовать механизмы безопасности Java EE, такие как @RolesAllowed
и @RolesAllowed
sessionContext.getCallerPrincipal()
вместо создания собственных механизмов. Если вы выполните надлежащую проверку подлинности в веб-модуле, контекст безопасности будет распространен на EJB.
Блестки состояния - не очень хорошая идея, и особенно в вашем дизайне. Вы не можете использовать бобы с состоянием в фазах без состояния, поскольку экземпляры фаз без учета состояния повторно используются среди разных вызовов/пользователей.