Shiro插件在grails 2.4.0中不应用“角色和权限”吗?

时间:2018-07-16 07:34:53

标签: grails groovy shiro

我在grails 2.4.0中工作,为了安全起见,我使用了版本为shiro:1.2.1的Shiro插件。对于Shiro集成,我遵循以下链接:

https://grails.org/plugin/shiro

Config.groovy

security {
shiro {
    authc.required = false
    filter.config = """

[urls]

/auth/login= noSessionCreation
/**.html = noSessionCreation , restTokenAuth
/user/addAllPermission** = noSessionCreation
/user/permission = noSessionCreation, restTokenAuth
/role/** = noSessionCreation, restTokenAuth
/property/** = noSessionCreation, restTokenAuth
/city/**    = noSessionCreation, restTokenAuth
"""
    }
}

我已经在 bootstrap.groovy 中创建了一个用户,例如:

  if(User.findAllByUsername("fooUser@yopmail.com").isEmpty()){
            def bl3User = new User(username: "fooUser@yopmail.com",
                    password: new Sha256Hash("123456").toHex())
            bl3User.addToPermissions("property:*")
            bl3User.save(flush: true, failOnError: true)
        }

ShiroSecurityFilters.groovy

class ShiroSecurityFilters {
  def filters = {
    all(uri: "/**") {
        before = {
            println "${controllerName}"
            if (!controllerName) return true
            accessControl()
        }
    }
  }
}

它显示控制器名称,但不明白为什么accessControl()方法未在控制器上应用“角色和权限”,它总是返回真实值。 fooUser仅具有属性权限,但用户也可以访问其他控制器。

例如,如果fooUser可以成功地从邮递员city/list?userId=fooUser@yopmail.com中访问API,那是错误的,因为它仅具有property权限。

如何使用shiro插件在Grails 2.4.0中应用角色和权限?

0 个答案:

没有答案