12

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 の両方を持つユーザーの優先順位をどのように管理する必要がありますか?

4

2 に答える 2