如何使用Spring Security保护Grails Web服务

ux11

假设我有以下Domain类:

import grails.rest.Resource
@Resource(formats=['json'], uri='/api/book')
class Book {
    String name
    static belongsTo = [user: User]
}

我已经在Config.groovy中定义了spring安全拦截UrlMap来限制URL访问:

'/api/book':                      ['ROLE_USER']

假设系统中有两本书和两个用户,并且ID为1的书属于用户1,第二本书属于用户2。用户1已登录,以下请求应返回书1(这样做):

localhost:8080/myapp/api/book/1

但是如果同一用户请求以下资源:

localhost:8080/myapp/api/book/2

我希望其余的API返回一个空数组或“访问被拒绝”。我该如何实现?我需要一种处理所有请求类型(即GET / POST / PUT / DELETE)的方法。

ux11

通过生成相应的Web服务控制器来解决此问题:

grails generate-controller Book

并增加了对每个动作的限制,即索引,显示,保存,更新,删除。

例如,用于获取资源的Show操作:

localhost:8080/myapp/api/book/1

更改为如下代码:

import static org.springframework.http.HttpStatus.*
import grails.transaction.Transactional

@Transactional(readOnly = true)
class BookController {

   def springSecurityService
   static allowedMethods = [save: "POST", update: "PUT", delete: "DELETE"]

   Code omitted...

   def show(Book bookInstance) {
       if(bookInstance == null){
           notFound()
           return
       }
       def user = springSecurityService.currentUser 
       if(bookInstance.user.id == user.id) {
           respond bookInstance
           return
       }
       notFound()
   }

   Code omitted...
}

Grails版本:2.4.4

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

从Android调用受Spring Security保护的REST Web服务

如何使用Spring RESTful Web服务处理CSRF保护?

Spring Security是否可以保护服务层,Web服务层或两者?

如何保护REST Web服务?

如何使用 SSL 保护 Spyne Web 服务?

使用Spring Security在入口点后面保护微服务

如何使用Spring Security Oauth来保护Struts2 Rest服务

尽管我未授权,但如何使用Spring保护REST Web服务,DELETE是可行的

如何保护Axis2 Web服务?

如何调用受保护的 Web 服务

使用令牌(Java)保护REST Web服务

如何使用TLS / SSL保护内部Web服务器?

如何保护Web API公开的RESTful Web服务?

保护Spring RESTful Web服务API免受未经授权的访问?

Grails Spring Security 3服务springSecurityService为空

如何使用Spring Boot和Spring Security保护REST API?

使用Spring Security保护Web应用程序免受CSRF攻击

如何在Android中保护呼叫Web服务的安全

如何在不登录的情况下保护Web服务

使用 Java 访问受 azure 活动目录保护的 Web 服务

使用Google OAuth保护ASPNET Core中的Web服务

在OSGi捆绑包中使用https保护Web服务

使用NAS保护我的Web服务器

禁用Spring Security Basic登录-Spring REST Web服务

使用Spring oauth2消耗受OAuth保护的REST Web服务

如何在Spring 4.0 RestFul Web服务上实现Spring Security?

如何使用CXF框架使用受HTTP基本身份验证保护的Web服务?

如何使用spring security同时保护2条路径?

Apache CXF:如何使用基本身份验证保护JAX-RS Web服务