假设我有一个@Controller,它有两种方法可以做相关但不同的事情。我想在同一个 URL 端点上公开它们,但根据安全上下文具有不同的功能。现在我知道我可以有一个映射的请求方法并分派到我的类中的不同实用程序函数,但是我可以连接它以便 Spring MVC 将根据进来的内容为我处理分派吗?
作为一个稻草人的例子,有代码在 ROLE_ADMIN 和 ROLE_USER 之间分派,但我的实际用例要复杂得多:
@Controller
public class Controller {
@RequestMapping("/api/thing")
@PreAuthorize("hasRole('ROLE_ADMIN')")
public String doAnAdministrativeThing() {
... (admin-priviledge stuff goes here)
}
@RequestMapping("/api/thing")
@PreAuthorize("hasRole('ROLE_USER')")
public String doADifferentThing() {
... (normal-priviledged stuff goes here)
}
}
抢占任何兔子洞:
不,我可能没有任何选择让这两个函数位于不同的 URL 或具有不同的参数或任何“正常”@RequestMapping 位
安全上下文差异很复杂,但可以在 @PreAuthorize 表达式中处理
实际上有两个以上不同的上下文可以调度