我建立,从网站上显示数据库中的信息的应用程序。该应用程序使用Spring Security进行保护,我的用户可以拥有不同的角色。记录应根据当前用户的角色显示。例如,我想显示来自数据库的书籍。角色X
只能看到一些书籍和作用Y
了。但角色ADMIN
可以看到所有的书籍。如何授权Spring应用程序的服务层?
现在我不知道在哪里以及如何授权情况。我认为服务层将是一个很好的地方,但我怎样才能查询当前用户可以访问的角色。
我的表是这样的:
book (id, name)
role (id, name)
role_book (id, role_id, book_id)
因此,对于图书的查询将SELECT b.id, b.name FROM book b, role r role_book rb WHERE b.id = rb.book_id AND r.id = rb.role_id AND r.name IN (<roles of the current user>)
。当当前用户具有ADMIN
角色时,我只需选择数据库中的所有书籍。
但是我怎么执行的春季服务方法这些查询?我认为这是一项常见的授权任务。有没有弹簧机制来做到这一点?