質問

運ずれなしの春セキュリティ注釈を使ってジャージーサービスを確保しようとしています。

このセクションを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を使用することでした。彼らは非常に似ているので、それほど多くはありませんでした。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top