我正在使用默认的securityConfigType,它被设置为使用注释.
我有哪些选择来保护Spring Security UI控制器?
我是否需要在所有控制器上使用s2ui-override来通过子类化来保护它们?
更新Spring Security UI插件并在控制器上添加@Secured(['ROLE_ADMIN'])?
还是有一些更简单的方法?
我可以混合Spring安全访问控制机制(例如:混合注释和静态URL规则).
在ref文档中,我发现只有例子
class ExamplePlugin {
def doWithDynamicMethods = { applicationContext ->
application.controllerClasses.each { controllerClass ->
controllerClass.metaClass.myNewMethod = {-> println "hello world" }
}
}
}
Run Code Online (Sandbox Code Playgroud)
但是我不想为这样的代码创建插件......
我只是将spring-security-plugin添加到我的grails项目中.一切看起来都很好.但是当我尝试注销时,应用程序会向我显示注销消息,但应用程序仍然已登录!
我的配置文件如下:
// Added by the Spring Security Core plugin:
grails.plugins.springsecurity.useBasicAuth = true
grails.plugins.springsecurity.userLookup.userDomainClassName = 'malibu.server.User'
grails.plugins.springsecurity.userLookup.authorityJoinClassName = 'malibu.server.UserRole'
grails.plugins.springsecurity.authority.className = 'malibu.server.Role'
Run Code Online (Sandbox Code Playgroud)
干杯
我成功安装了SpringSecurity,在用户注册并使用Spring Security UI'RegisterController闭包验证用户后,我可以看到用户使用springSecurityService.reauthenticate成功登录.
但是,如果我注销并尝试使用spring security提供的auth屏幕登录,我总是得到http://:port/spoofsecurity/login/auth?login_error = 1
我可以在数据库中看到用户在那里并解锁并启用.
感谢任何想法,为什么我登录失败.
谢谢
我的Config.groovy条目
grails.plugins.springsecurity.userLookup.userDomainClassName = 'com.srisris.spoofsecurity.auth.SchemeUser'
grails.plugins.springsecurity.userLookup.authorityJoinClassName = 'com.srisris.spoofsecurity.auth.SchemeUserRole'
grails.plugins.springsecurity.authority.className = 'com.srisris.spoofsecurity.auth.SchemeRole'
//grails.plugins.springsecurity.password.algorithm='SHA-512'
grails.plugins.springsecurity.securityConfigType = SecurityConfigType.Annotation
//grails.plugins.springsecurity.securityConfigType = SecurityConfigType.Requestmap
//grails.plugins.springsecurity.requestMap.className = 'com.srisris.spoofsecurity.auth.Requestmap'
//grails.plugins.springsecurity.useSwitchUserFilter = true
grails.plugins.springsecurity.securityConfigType = SecurityConfigType.Annotation
Run Code Online (Sandbox Code Playgroud)
LoginController.groovy
import grails.converters.JSON
import javax.servlet.http.HttpServletResponse
import org.codehaus.groovy.grails.plugins.springsecurity.SpringSecurityUtils
import org.springframework.security.authentication.AccountExpiredException
import org.springframework.security.authentication.CredentialsExpiredException
import org.springframework.security.authentication.DisabledException
import org.springframework.security.authentication.LockedException
import org.springframework.security.core.context.SecurityContextHolder as SCH
import org.springframework.security.web.WebAttributes
import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter
class LoginController {
/**
* Dependency injection for the authenticationTrustResolver.
*/
def authenticationTrustResolver
/**
* Dependency injection for the springSecurityService.
*/ …Run Code Online (Sandbox Code Playgroud) 当我尝试部署由Grails创建的war文件时出错.
我正在使用Spring安全插件并部署了Tomcat 7.
在阅读了类似的问题后,我认为它与插件没有被包装在战争中有关,但我不完全确定.
以下是catalina.out文件显示的内容:
log4j:ERROR Error initializing log4j: grails/plugins/springsecurity/SecurityConfigType : Unsupported major.minor version 51.0 (unable to load class grails.plugins.springsecurity.SecurityConfigType)
java.lang.UnsupportedClassVersionError: grails/plugins/springsecurity/SecurityConfigType : Unsupported major.minor version 51.0 (unable to load class grails.plugins.springsecurity.SecurityConfigType)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:186)
at Config.class$(Config.groovy)
at Config.$get$$class$grails$plugins$springsecurity$SecurityConfigType(Config.groovy)
at Config.run(Config.groovy:116)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:636)
08-Nov-2011 17:56:12 org.apache.catalina.core.StandardContext startInternal
SEVERE: Error listenerStart
Run Code Online (Sandbox Code Playgroud) 我花了几个星期试图弄清楚我应该为我发布的这个问题带来什么样的解决方案.由于我找不到Shiro-Grails集成的完整文档,我正在寻找一些其他框架(如Spring)来保护我们基于Web的轻量级Web应用程序.
该应用程序已有几个月的历史,并不是一个巨大的应用程序.不超过20个持久类.但是,我相信它会很快成长.但是,安全性还没有实现,我想确保我会找到最好的安全框架(对我来说最好的可能包括:免费源代码,文档齐全,易于与Grails集成,可扩展,最后但更不安全更安全).
有什么建议?
任何人都可以给我完整的步骤来使用jquery-ui自动完成.我正在使用grails 2.0.1.
我需要一个完整的例子,包括控制器和视图的代码.
提前致谢.
我是一个Grails noob,试图为我的第一个项目配置db-reverse-engineer插件. 插件的文档表明我需要配置它,但我没有看到我应该编辑配置的位置.
我的项目中是否有需要编辑的配置文件?我在./grails-app/conf文件夹中搜索了grails.plugin(此插件配置的前缀),但没有找到任何内容.SO或Google搜索如何配置grails插件也会返回void.我知道这是一个蹩脚的问题,但我如何配置这个插件?是否有我需要使用的UI,或者有哪些文件可以编辑?
我使用grails 2.4.3并安装了官方grails安全插件
compile ":spring-security-core:2.0-RC4"
Run Code Online (Sandbox Code Playgroud)
在安装插件之前,我可以使用url访问数据库控制台页面
http://localhost:8080/tobu/dbconsole
Run Code Online (Sandbox Code Playgroud)
但是,安装插件后,我无法这样做.当我尝试访问上面提到的URl并通过任何用户帐户登录时,我获得了默认登录屏幕,显示"访问被拒绝"页面.我该如何解决这个问题?
grails.project.groupId = appName
grails.mime.disable.accept.header.userAgents = ['Gecko', 'WebKit', 'Presto', 'Trident']
grails.mime.types = [ // the first one is the default format
all: '*/*', // 'all' maps to '*' or the first available format in withFormat
atom: 'application/atom+xml',
css: 'text/css',
csv: 'text/csv',
form: 'application/x-www-form-urlencoded',
html: ['text/html','application/xhtml+xml'],
js: 'text/javascript',
json: ['application/json', 'text/json'],
multipartForm: 'multipart/form-data',
rss: 'application/rss+xml',
text: 'text/plain',
hal: ['application/hal+json','application/hal+xml'],
xml: ['text/xml', 'application/xml']
]
grails.views.default.codec = "html"
grails.controllers.defaultScope = 'singleton'
grails {
views {
gsp { …Run Code Online (Sandbox Code Playgroud) 我正在尝试将Grails应用程序从2.4.3升级到2.5.0版本.Grails 2.5.0包含修复和改进,但没有任何重大更改.此外,安装了所有2.5.0兼容的插件版本.
还通过Grails Database Migration Plugin changelog和其他插件来支持grails 2.5.0.遇到我现在面临的相同JIRA问题 - Jira Link,但它已经在旧的Grails数据库迁移插件版本中得到修复.
BuildConfig.groovy
grails.servlet.version = "3.0" // Change depending on target container compliance (2.5 or 3.0)
grails.reload.enabled = true
grails.project.class.dir = "target/classes"
grails.project.test.class.dir = "target/test-classes"
grails.project.test.reports.dir = "target/test-reports"
grails.project.target.level = 1.6
grails.project.source.level = 1.6
grails.project.dependency.resolver = "maven"
grails.project.dependency.resolution = {
inherits("global") {
}
log "warn"
checksums true // Whether to verify checksums on resolve
repositories {
inherits true // Whether to inherit repository definitions from plugins
grailsPlugins()
grailsHome()
mavenLocal()
grailsCentral() …Run Code Online (Sandbox Code Playgroud)