在grails中使用spring安全插件时出错



我一直在尝试将spring安全性集成到我的一个grails应用程序中。正如spring安全教程中提到的,我使用以下代码安装了插件

BuildConfig.groovy:我添加了以下代码

repositories {
mavenRepo 'http://repo.spring.io/milestone'
}
plugins {
compile ':spring-security-core:2.0-RC2'
}

后来我清理了代码并对其进行了编译,以确保下载了依赖项。我还检查了grails文件夹,以确保下载了依赖项。

接下来,我创建了User和Role类。(注:我已将这些类分别命名为Person和Authority)。

在此之后,我创建了SecureController,并且没有添加任何安全访问注释,但我仍然无法访问安全控制器。控件直接重定向到登录控制器

问题1:是不是在使用spring安全插件后,每个页面都需要进行身份验证。有没有一种方法可以在不登录的情况下访问页面

接下来,我将@Secured注释添加到SecureController中。尽管@Secured注释存在于项目的插件文件夹中,但它根本不会被检测到。起初,我认为我错过了一些东西,所以我从开始实施相同的步骤开始再次创建了这个项目。然而,这次插件被检测到

问题2:为什么spring安全插件的行为如此不一致

我尝试在未登录的情况下访问SecureController,但出现以下错误。

EL1008E:(位置0):在类型为"org.springframework.security.web.access.expression.WebSecurityExpressionRoot"的对象上找不到字段或属性"ADMIN_ROLE"

登录并尝试访问控制器后,我也会遇到同样的错误。

问题3:是不是我错过了任何需要指定的依赖项。

在登录页面中,表单会导致一些操作"j_security_check"。我没有在任何控制器中注意到这个动作。

问题4:我需要为这个名称为的创建一个新操作吗

请帮我整理一下这个问题。事先非常感谢您的帮助。

安装插件后,您需要运行s2 quickstart来获得基本配置。

如果你想重命名默认类,你需要在Config.groovy文件中指定给Spring Security:

grails.plugins.springsecurity.userLookup.userDomainClassName = 'sys.Usuario'
grails.plugins.springsecurity.userLookup.authorityJoinClassName = 'sys.UsuarioRol'
grails.plugins.springsecurity.authority.className = 'sys.Rol'
// This last two lines if you're using Requestmap Instances method for protect your resources
grails.plugins.springsecurity.requestMap.className = 'sys.Requestmap'
grails.plugins.springsecurity.securityConfigType = 'Requestmap'

下一行,用于拒绝此资源不存在的所有请求规则。

grails.plugins.springsecurity.rejectIfNoRule = true

正如您在文档中看到的。你有4种不同的形式来保护你的资源。

  1. 安全注释
  2. Config.groovy中的简单映射
  3. 存储在数据库中的请求映射实例
  4. 使用表达式创建描述性的细粒度规则

我同意Burth的观点,请每个问题回答一个问题。

最新更新