资源注解

不想集中配置,非常类似在前面某部分讨论的,可以通过注解在在资源类中直接控制资源访问。Spring使用org.springframework.security.access.prepost.PreAuthorize提供了一个基于表达式的访问控制机制。 让我们一起修改下在这章开头描述过的那个端点:

@RestController 
@RequestMapping("/bookings") 
public class BookingsResource {
    @PreAuthorize("hasRole('ROLE_ADMIN')")  
    @RequestMapping(value = "/{bookingId}", method = RequestMethod.GET)    
    public BookingDTO getBooking(@PathVariable("bookingId") long bookingId) {    
        // omitted  
    } 
}

在我们端点中添加@PreAuthorize("hasRole('ADMIN')")声明来指示Spring Security只授权给管理员访问这个资源。如果用户尝试调用这个端点,服务将会返回一个403 Forbidden响应。

技巧

如果资源需要被多个角色访问,可以使用下面的表达式:

hasAnyRole('role1, role2')

现在让我们把注意力转移到安全的其他也扮演着非常重要角色方面:输入验证。下一节探讨如何使用Spring实现输入验证。

results matching ""

    No results matching ""