私は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>