/ / Springセキュリティ - @RequestParamパラメータに対して原則を検証してリクエストを保護する - java、春、spring-mvc、春セキュリティ、spring-el

Springのセキュリティ - @RequestParamパラメータに対する原則を検証することでリクエストを保護しますか? - java、spring、spring-mvc、spring-security、spring-el

私はRestful API(多くのURLを含む)を使っていますそして、認証されたユーザ "principal"からのデータとリクエストによって送信されたデータの両方を使用するセキュリティフィルタをリクエストごとに適用したいです。

例:

リクエストURLからaccountIdを検証します。

http://www.foo.com/accountRecords?accountId=23

主要データあり principal.accountId = 23.

これは@requestMappingメソッド内から実行できることを知っていますが、それを実行したい 外側 実際の方法なので、ビジネスロジックに干渉することなく保守と設定が可能です。

しかし、私はそれに関するアドバイスを見つけられませんでした..

私はそれが次のように見えるはずだと思います。 @PreAuthorize("principal.accountId == requestParam.accountId")

回答:

回答№1は0

リクエストとレスポンスをフィルタリングするためのフィルタを探していると思います。春には、あなたが使用することができます interceptors この目的のために。

public class MyInterceptor extends HandlerInterceptorAdapter {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
HttpSession session = request.getSession(false);
String requestParam = request.getParameter("your request param");
}
}

最後に、context.xmlファイルでこれらのインターセプターを設定する必要があります。

<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/**"/>
<bean class="com.example.MyInterceptor" />
</mvc:interceptor>
</mvc:interceptors>