结合弹簧安全3和球衣休息api

时间:2011-11-02 23:10:37

标签: rest spring-security jersey

我有一个场景,我试图将Spring安全性与针对我的REST API的jersey结合起来。

我的需求相当复杂(我认为),具体如下:

Spring安全性被用于拦截URL并强制进行基本身份验证以访问REST资源。这似乎没问题,因为我正在使用http客户端来测试它。

但是,我想要做的是以某种方式访问​​加载的User对象,以检查挂起用户的一些其他权限(带有布尔标志的地图对象,以指示对象属性是否可见)。执行加载的代码有效,但是在Spring验证后如何在实际的REST Resource方法本身中访问User对象?这可能吗?

所以步骤是:

1)客户端进行REST API调用 2)Spring拦截URL检查http头中提供的用户名和密码 3)如果存在有效凭证,则访问其余资源方法

但是在第3步之前,我想以某种方式将加载的User对象传递给实际的Resource方法本身,这样我可以进一步应用一些逻辑来限制用户可以根据我加载的权限看到的内容???这可能吗?我认为在使用Spring和REST访问方法之前,我已经看到某些代码检查用户角色,但是如果有人有任何链接或想法非常好。

如果可以,请帮忙。非常感谢你。

1 个答案:

答案 0 :(得分:5)

我通过使用由bean工厂构建的请求范围的代理解决了这个问题。

这允许您简单地将当前经过身份验证的用户注入任何spring托管bean,在我的情况下,我的Jersey Resources属于该类别。我将我的用户注入了资源下面的层,但它们都是一样的。

Someone else elegantly blogged the full solution here.