1

私の問題を説明しましょう。次のようにアクセスされる AngularJS にサイトを実装しました。

http://localhost:8080/example/resources/#/

ここでは、ログイン ページなど、さまざまなページを呼び出すことができます。

http://localhost:8080/example/resources/#/login

管理ページ:

http://localhost:8080/example/resources/#/admin

ユーザーページ:

http://localhost:8080/example/resources/#/user

ここで、すべての呼び出しをキャッチし、ROLE_USER 権限があるかどうかを確認するために、例にスプリング セキュリティを実装しました。これまでのところ、Spring セキュリティ コンテキスト ファイルで次のように構成しました。

<security:http create-session="stateless" entry-point-ref="restAuthenticationEntryPoint"
 authentication-manager-ref="authenticationManager">

    <security:custom-filter ref="customRestFilter" position="BASIC_AUTH_FILTER" />
     <security:intercept-url pattern="/**" access="ROLE_USER" />       
</security:http>

この構成は、呼び出されたすべての URL をチェックし、ユーザーが適切な ROLES を持っていて、正常に機能し、401 Unauthorized ページをスローするかどうかを確認します。

私が抱えている問題は、ログインページを誰でもアクセスできるようにするときに、次のようにすることです。

<security:http create-session="stateless" entry-point-ref="restAuthenticationEntryPoint"
 authentication-manager-ref="authenticationManager">

    <security:custom-filter ref="customRestFilter" position="BASIC_AUTH_FILTER" />
      <security:intercept-url pattern="/login**" access="ROLE_ANONYMOUS" /> 
     <security:intercept-url pattern="/**" access="ROLE_USER" />       
</security:http>

しかし、春のセキュリティがこの URL をキャッチしない理由がわかりません。おそらく、Angular は URL を別の方法で管理します。

最後に、を削除し<security:intercept-url pattern="/**" access="ROLE_USER" /> て /login** に ROLE_USER のみへのアクセスを許可しようとしましたが、このページは見つかりませんでした。ここで何が起こっているのか知っている人はいますか?

前もって感謝します!!!

4

1 に答える 1

0

セッション ID を HTTP ヘッダー (x-auth-token) として公開することで、AngularJSを Spring Securityと統合する方法を示す小さなサンプル アプリケーションを作成しました。このサンプルでは、​​クライアントの AngularJS アプリケーションがそれに反応できるように、いくつかの (単純な) 承認 (サーバーからロールを返す) も提供します。もちろん、これは主にユーザーエクスペリエンス (UX) を目的としています。REST エンドポイントにプロパティ セキュリティがあることを常に確認してください。

これに関する私のブログ投稿はこちらです。

于 2014-09-16T13:46:30.850 に答える