0

次の状況があります

/drug の下にあるものはすべて安全です。ユーザーが /drug の下にあるものを表示できないようにしたくないので、春のセキュリティ設定にこのルールを設定しました。

<intercept-url pattern="/drug/**" access="hasRole('ROLE_DRUG')" />

しかし、ユーザーが /drug をヒットしたときに、このセクションまたはモジュールを購入する方法に関するメッセージを含むアクセス拒否ページを表示できるようにしたいと考えています。同じ URL、つまり /drug/access-denied の下にアクセス拒否メッセージを表示する必要があります。

だから私は春のセキュリティ設定に別のルールを追加しました

<intercept-url pattern="/drug/access-denied" access="isAuthenticated()"/>

しかし、春のセキュリティは最初のものだけを考慮しているようで、順序を変更しても違いはありませんでした。URL は /drug/access-denied でなければなりません

何か案は???


re.match文字列の先頭にのみ一致します。re.searchどこでもマッチします。docsに従って.*、 re.match の先頭にa を追加するだけでなく、使用re.searchして最適化を取得してください! (re.search最初の文字に一致する文字列の部分のみをチェックするために c でクイック ループを作成します。あいまいな文字で始まる場合は、文字列の最後まで行ってバックトラックする必要があります。)

ここでは、Python の正規表現機能のほとんどについて、より穏やかで (私が思うに) 一般的にはより適切な紹介を示します。

4

2 に答える 2

0

以下の構成を参照して、あなたのものに似たものを作ってみてください。まず第一に、あなたが書いた理由がわかりません

<intercept-url pattern="/drug/access-denied" access="isAuthenticated()"/>

認証されたユーザーのみがそのページを表示できるようにするアクセス拒否ページには何がありますか。

あなたの設定では、その時点でアクセス拒否ページを表示することがわかったときに、それを isAuthenticated() として言及しました.

そうあるべきだと思いますが、

<intercept-url pattern="/drug/access-denied" access="permitAll"/>

それから書く、

<intercept-url pattern="/drug/**" access="hasRole('ROLE_DRUG')" />

下記参照

<security:form-login  login-page="/login.jsp"
    default-target-url="/drug/home"  authentication-failure-handler-ref="authenticationFailureHandler" />

<security:intercept-url pattern="/login.jsp"
    access="permitAll" />


<security:intercept-url pattern="/accessDenied.jsp"
    access="permitAll" />


    <security:intercept-url pattern="/drug/*"
        access="isAuthenticated()" />


    <security:logout logout-url="/j_spring_security_logout" logout-success-url="/login.jsp?logout=success" 
        invalidate-session="true"  />

</security:http>
于 2013-08-15T09:54:03.523 に答える
0

これを、intercept-url タグの前に構成に追加してみてはどうでしょうか?

<access-denied-handler error-page="/drug/access-denied" />

次に、「アクセス拒否」のインターセプト URL ルールを削除できます。

于 2014-09-09T07:34:47.777 に答える