ejb方法的声明性安全性

时间:2014-04-23 13:49:50

标签: java jsf java-ee primefaces jsf-2.2

我是JEE 7的初学者。 我正在尝试使用(Primefaces 4.0和Glassfish 4.0)为企业应用程序实现安全模型,但是当我使用来自托管bean的注释调用ejb'安全方法时,它不会检查方法的安全性。我想在两个级别(web和ejb)中创建安全性:我已经实现的Web上的第一部分,但另一部分是ejb方法是我的问题。 任何帮助??

这是托管bean(buttonControlles.java)

@Named
@RequestScoped

 public class buttonController {  

    mySec myClass;

    public buttonController(){
     myClass = new mySec();
    }

    public void adminMethod()
    {
        if(myClass.ifManager())
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO,"Hello Manager", "")); 
    }
}

,ejb类是MySec.java

@DeclareRoles({"admin","users","manager"})

@Stateless public class mySec {

    @RolesAllowed("manager")
    public boolean ifManager()
    {
        return true;
    }
}

1 个答案:

答案 0 :(得分:0)

我已经解决了问题,因为我实例化了MySec.java类 它必须在未实例化的托管bean中注入

@Named
@RequestScoped

public class buttonController {  

@EJB mySec myClass;

public buttonController(){
}

public void adminMethod()
{
    if(myClass.ifManager())
        FacesContext.getCurrentInstance().addMessage(null, new  FacesMessage(FacesMessage.SEVERITY_INFO,"Hello Manager", "")); 
}
}