4

我在 JBoss-7 环境中使用 ReastEasy,目前正在实施安全功能。我正在使用带有 SSL 连接的 HTTP Basic。添加和评估标头参数很容易(感谢使用 REST API 在消息标头中传递参数):

@Provider @ServerInterceptor
public class RestSecurityInterceptor implements PreProcessInterceptor
{
  @EJB MyBean fUser;
  private MyUser user;  

  @Override
  public ServerResponse preProcess(HttpRequest request, ResourceMethod method)
                                                     throws UnauthorizedException
  {
     // do some some stuff. If the request is authenticated I get a MyUser      
    user = ...
  }

  @Named @Produces @SessionScoped
  public MyUser getCurrentUser() {return user;}
}

这很好用,@Produces而且@Inject我的 REST 服务中的 and 也很有魅力。

@Path("/rest")
public class MyService extends Application
{
  @Inject private MyUser currentUser;

  @GET @Path("/test")
  public String test()
  {
    return "Hello "+currentUser.getName();
  }
}

现在我的问题是:以这种方式实现 REST 的安全性是否安全(我不想讨论 HTTP Basic 的优缺点,让我们专注于 CDI)?特别是我想知道我是否可以像描述的那样使用 CDI,以及我是否选择了正确的范围@SessionScoped

4

1 回答 1

0

会话范围不起作用。已经有一些关于 REST 和会话范围的问题。会话范围对于 JAX-RS 和 JAX-WS 调用都不是活动的。

于 2012-05-06T04:47:18.093 回答