【问题标题】:Grails, Vaadin 7 and SpringSecurity: authorization not workingGrails、Vaadin 7 和 SpringSecurity:授权不起作用
【发布时间】:2013-04-06 04:50:42
【问题描述】:

我已关注this 链接以使用 Grails、Vaadin 7 和 Spring Security 实现应用程序安全性。身份验证部分有效,但看起来授权无效。 我创建了一个这么简单的服务:

import grails.plugins.springsecurity.Secured
class WelcomeService {
    @Secured(['ROLE_ADMIN'])
    def sayHello() {
        return "Hello, ADMIN!"
    }
}

"ROLE_USER"的用户,但每次我打电话

Notification.show(Grails.get(WelcomeService).sayHello()) 会显示消息,但应改为抛出 AccessDeniedException

您知道为什么会发生这种情况吗?


UPD:目前我能想到的唯一解决方案是像这样更改服务代码:

def sayHello = {
    if (!springSecurityService.getPrincipal().getAuthorities().contains(new GrantedAuthorityImpl("ROLE_ADMIN"))){
        throw new AccessDeniedException("You are not authorized to do this!")
    }
    return "Hello, ADMIN!"
}

但是将springSecurityService 注入到每个服务类中并将此代码添加到每个方法中确实很尴尬。我怎样才能以更清洁的方式做到这一点?

【问题讨论】:

    标签: grails spring-security vaadin


    【解决方案1】:

    事实证明,控制器必须像 @Secured("hasRole('ROLE_ADMIN')") 一样,其余的都需要 ACL 插件才能工作。

    【讨论】:

      猜你喜欢
      • 2015-02-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-24
      • 2015-08-09
      • 2017-06-21
      • 1970-01-01
      • 2011-02-28
      相关资源
      最近更新 更多