我有一个带安全方法的服务类(@PreAuthorize
Spring Security).
编码是不好的做法?
也许我应该@PreAuthorize
只在我的控制器类(@Controller
或@RestController
)中使用此注释
是的,理想情况下,这种类型的授权检查应该在Controller或第一个请求处理程序步骤(如您提到的RestController)中完成.将@PreAuthorize
注释放在Controller方法上更有意义,因为请求不会被转发到服务层,如果找不到正确的角色,将不会执行不必要的代码(控制器方法中存在的代码).
但
如果您有多个控制器正在使用服务类的应用程序,那么您可以@PreAuthorize
在服务层上使用注释.如果明天有人创建新控制器(并忘记使用正确的授权检查)并使用现有服务类,那么您的应用程序将使用服务层授权正确处理授权.