2016-03-21 7 views
1

I'amでは動作しないユーザー認証を管理しようと、私の設定は次のとおりです。インターセプトURLは春のセキュリティ角度

<security:intercept-url pattern="/**" access="isAuthenticated() and hasRole('ROLE_ADMIN')" /> 
        <security:intercept-url pattern="/public/**" access="isAuthenticated() and hasRole('ROLE_USER')" /> 

私の問題は、唯一の管理者である「ログインしかし、他の人が、私はこのメッセージを得ることができますクーデターHTTP 403 - この問題の解決策は何もありませんか?

+0

助けることができることを願っています。 –

+0

あなたの答えをありがとう、私は順序を変更しましたが、ユーザーはフォルダ "public"の下のビューにアクセスできません –

+0

彼らはログインしていますか?あなたは現在すべてのものを保護していますが、ルールは少し冗長です。 'hasRole'は誰かが'認証されていない 'ことを意味します。 –

答えて

0

ここでの問題は、最初のルールが非常に制限されており、すべてのURLで春のセキュリティチェックがユーザーにROLE_ADMINがあるかどうかを確認することです。今私はあなたのセキュリティ要件は何か分かりませんが、あなたのケースでの評価を中止する最初のルールが、あなたの要求の除去を止め、他のユーザーの呼び出しを拒否することを考慮してください。

あなたがこの方法で試すことができます。この場合は

<security:intercept-url pattern="/public/**" access="hasRole('ROLE_USER')" /> 
<security:intercept-url pattern="/**" access="hasRole('ROLE_ADMIN')" /> 

はあなたが公共のURLは、ユーザがユーザロールを持つセキュリティ要件として持っていることを言うと、この要件が満たされていない場合、あなたがあるかどうかを評価ADMIN、2番目のルール。

isAuthenticated()を削除することに注意した場合、この場合はログに記録されたユーザーの役割のみをチェックします。

私は、これは `/ **` *常に*最後と最初ではないでなければなりませんそこで...セキュリティルールを指定する順序は、それらが協議された順序であなた

+0

私のコードを変更しましたが、動作しません、それはangularjsが '#'それを解決する方法を知っている –

+0

それは私が春のセキュリティと角度を使用してstangeです、私にとってはすべて正しく動作します。 –

+0

「public」が私の意見のフォルダであるか、角度サービスで使用されるパスでなければならないと教えてください –

関連する問題