3

spring mvc と spring security 3.2 を使用して開発された Web アプリがあります。安らかなサービスにhttp基本認証を使用し、他の部分にフォームログイン認証を使用するアプリが必要です。以下は私のセキュリティ設定です:

<http pattern="/services/**" create-session="stateless" use-expressions="true">
    <intercept-url pattern="/**" access="hasRole('ROLE_REMOTE,ROLE_USER')"/>
    <http-basic />
</http>

<http auto-config="true" use-expressions="true">
    <intercept-url pattern="/static/**" access="permitAll" />
    <intercept-url pattern="/**" access="hasRole('ROLE_USER')" />
    <form-login login-page="/login.do" always-use-default-target="true"     default-target-url="/main.do" />
    <logout invalidate-session="true" logout-success-url="/login.do"
        logout-url="/j_spring_security_logout" />
</http>

私が期待しているのは、ユーザーがフォームからログインすると、基本認証を行わずに安らかなサービスを呼び出すことができることです (認証されているため)。私の考えでは、ロール「ROLE_USER」を持つユーザーも安らかなサービスを呼び出す必要があります。ただし、フォームからログインした後、ブラウザから安らかなサービスを呼び出そうとすると、基本認証を行うように求められました。

とにかく私が期待するものを得る方法はありますか?

4

1 に答える 1

3

答えは、属性の説明にあるcreate-session可能性があります。

  • never- Spring Security はセッションを作成しませんが、アプリケーションが作成した場合はセッションを使用します。
  • stateless- Spring Security はセッションを作成せず、Spring 認証を取得するためのセッションを無視します。

statelessフォームログインが無視された後、セッションに永続化された認証オブジェクトを選択したためです。never期待どおりに動作するかどうか試してください。

于 2013-06-04T10:14:04.603 に答える