31

ユーザーが特定のページを表示する権限を持っていない場合に、コントローラーが正しい HTTP 応答コードを返すようにします。

4

5 に答える 5

48

投げるだけでもいい

org.springframework.security.access.AccessDeniedException("403 returned");

これにより、応答ヘッダーで 403 が返されます。

于 2016-07-19T19:34:32.870 に答える
44

@ResponseStatusで注釈を付けた例外を作成します。たとえば、次のようにします。

@ResponseStatus(HttpStatus.FORBIDDEN)
public class ForbiddenException extends RuntimeException {
}

ハンドラー メソッドでその例外をスローするだけで、応答のステータスは 403 になります。

于 2015-03-05T17:02:53.693 に答える
13

急ごしらえ

プレーンなJSPビューを使用している場合(最も一般的です)、単に追加します

<% response.setStatus( 403 ); %>

ビューファイルのどこかにあります。上部は素敵な場所です。

詳細

MVCでは、常にこれをビューに設定します。ほとんどの場合、Spring-MVCではSimpleMappingExceptionResolver、スローされたランタイム例外に応答して正しいビューを表示するためにを使用します。

例:コントローラーまたはサービスレイヤーでを作成してスローしPermissionDeniedException、例外リゾルバーがビューファイルを指すようにしますpermissionDenied.jsp。このビューファイルは403ステータスを設定し、ユーザーに適切なメッセージを表示します。

Spring Bean XMLファイルの場合:

<bean id="exceptionResolver"
      class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
  <property name="exceptionMappings">
    <props>
      <prop key="PermissionDeniedException">          
        rescues/permissionDenied
      </prop>
      ... set other exception/view mappings as <prop>s here ...
    </props>
  </property>
  <property name="defaultErrorView" value="rescues/general" />
</bean>

<bean id="viewResolver"
      class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />
  <property name="prefix" value="/WEB-INF/views/" />
  <property name="suffix" value=".jsp" />
</bean>

ユーザーログインメカニズムを実装する必要がある場合は、Spring Security(以前のAcegi Security)を参照してください。

于 2008-09-05T11:35:15.937 に答える
13

を使用するのExceptionResolverは良い方法ですが、これをビューに依存しないようにしたい場合はresponse.sendError(HttpServletResponse.SC_FORBIDDEN, "AdditionalInformationIfAvailable");、コントローラーでを呼び出すことができます。

于 2008-09-05T12:15:34.853 に答える
6

これを使用してください: response.setStatus(403).

于 2008-09-05T11:22:57.697 に答える