事前認証注釈はジャージーでは機能しません
-
21-12-2019 - |
質問
運ずれなしの春セキュリティ注釈を使ってジャージーサービスを確保しようとしています。
このセクションをweb.xmlに追加しました:
<servlet>
<servlet-name>Jersey REST Service</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>com.test.proj.ui.web.rest;com.fasterxml.jackson.jaxrs</param-value>
</init-param>
<init-param>
<param-name>javax.ws.rs.Application</param-name>
<param-value>com.test.commons.ui.web.jersey.RestApplication</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
.
ApplicationContext:
でこれを使用してポスト注釈を有効にしました。<global-method-security secured-annotations="enabled" pre-post-annotations="enabled" />
.
そしてこれは私のサービスクラスです:
@Component
@Path("/user/{uid: .*}")
public class UserResource {
@GET
@Produces(MediaType.APPLICATION_JSON)
@PreAuthorize("hasRole('ROLE_MANAGE_USER')")
public Response getUserDetail(@PathParam("uid") String uid) {
return "Hi, this is a test";
}
}
.
Spring Securityは認証でうまく機能しますが、承認は期待どおりに機能しないため、エラーやログなしで予備の注釈を無視します。
春3.2.4とSpring Security 3.2.1とJersy 2.6を使用しています。
任意のアイデア?
ありがとう
解決 2
スプリングコンポーネントスキャンが正しく設定されていませんでした!問題を解決するには、コンポーネントスキャンのみを正しくスキャンして機能します。
他のヒント
私たちはまったく同じ問題に直面していました。ビジネスレイヤで@Prealuthorize注釈は機能しましたが、RESTリソースではしませんでした。この状況の副作用は、スプリングビーンインジェクションも同様に機能しなかったことでした。エラーなしのすべて。
100%働く解決策は、ジャージの代わりにresieasyを使用することでした。彼らは非常に似ているので、それほど多くはありませんでした。
所属していません StackOverflow