【发布时间】:2016-03-30 14:14:50
【问题描述】:
我需要为我的 REST API 提供基于角色的访问,我已经看到我们可以为此使用 @PreAuthorize, @Secured。但是我不确定我应该进行哪些更改并将其落实到位,因为目前我使用custom token based authentication mechanism 为会话生成令牌并自己处理。
@RequestMapping(value = "login", method = RequestMethod.POST)
public @ResponseBody Result login(@RequestBody Credentials credentials) {
return loginService.login(credentials.getUsername(), credentials.getPassword());
}
Result 类只包含为用户生成的令牌,他将在每个请求中传递该令牌。
现在知道如果用户具有特定角色,我应该进行哪些更改来限制 API 的访问
例如,如果我想限制 API findById 仅当用户是 ADMIN_ROLE 的一部分时才可以访问,那么我将不得不添加 PreAuthorize 注释,但我不确定这将如何确定用户角色并自动阻止用户。
@PreAuthorize("ADMIN_ROLE")
@RequestMapping(value = "{id}", method = RequestMethod.GET)
public @ResponseBody Group findById(@PathVariable int id) {
return groupParser.getGroupById(id, groupService.getGroupTree());
}
【问题讨论】:
-
我处理基于自定义令牌的身份验证 @RequestMapping(value = "login", method = RequestMethod.POST) public @ResponseBody Result login(@RequestBody Credentials credentials) { return loginService.login(credentials.getUsername (),credentials.getPassword()); }
-
请不要解释配置,而是发布它 :-) 如果您这样做,您将得到更准确的答案。
-
感谢@StefanoCazzola。我做了一些更改并添加了更多信息。
标签: spring-mvc spring-security spring-4