Spring MVC と Spring Security を使用して構成された API エンドポイントがあるとします。@Secured アノテーション値のみがペアごとに異なる @RequestMapping と @Secured アノテーションのペアを処理できるようにしたいと考えています。このようにして、同じリクエストのセキュリティ ルールに応じて、異なるレスポンス ボディを返すことができます。
これにより、セキュリティ ルールをメソッド本体に直接チェックすることを回避することで、コードをより保守しやすくすることができます。
動作しない例を使用して、次のことを行います。
@Controller
@RequestMapping("/api")
public class Controller {
@Secured ({"ROLE_A"})
@RequestMapping(value="{uid}", method=RequestMethod.GET)
@ResponseBody
public Response getSomething(@PathVariable("uid") String uid) {
// Returns something for users having ROLE_A
}
@Secured ({"ROLE_B"})
@RequestMapping(value="{uid}", method=RequestMethod.GET)
@ResponseBody
public Response getSomethingDifferent(@PathVariable("uid") String uid) {
// Returns something different for users having ROLE_B
}
}
どうすればこれを達成できますか? そして、これができる場合: ROLE_A と ROLE_B の両方を持つユーザーの優先順位をどのように管理する必要がありますか?