我在我的Grails应用程序中安装了Spring Security Core,并使用s2-quickstart
进行设置。我想'/'来处理登录和注销操作。这对我来说意味着没有登录的用户只能访问根页面而没有其他任何东西。实际上,除'/'之外的所有内容应该是没有角色'ROLE_ADMIN'的用户的blocket。Grails,Spring Security Core - 从应用程序中删除/登录/认证
我加Config.groovy中根页上登录表单,并设置以下配置:
grails.plugin.springsecurity.auth.loginFormUrl = '/'
grails.plugin.springsecurity.auth.ajaxLoginFormUrl = '/'
grails.plugin.springsecurity.failureHandler.defaultFailureUrl = '/'
grails.plugin.springsecurity.failureHandler.ajaxAuthFailUrl = '/'
grails.plugin.springsecurity.logout.postOnly = false
grails.plugin.springsecurity.userLookup.userDomainClassName = 'adminpanel.security.SecUser'
grails.plugin.springsecurity.userLookup.authorityJoinClassName = 'adminpanel.security.SecUserSecRole'
grails.plugin.springsecurity.authority.className = 'adminpanel.security.SecRole'
grails.plugin.springsecurity.controllerAnnotations.staticRules = [
'/': ['permitAll'],
'/index': ['permitAll'],
'/index.gsp': ['permitAll'],
'/**/js/**': ['permitAll'],
'/**/css/**': ['permitAll'],
'/**/images/**': ['permitAll'],
'/**/favicon.ico': ['permitAll']
]
我我的每个控制器上设置@Secured(['ROLE_ADMIN'])
并添加这样的事情我index.gsp中:
<head>
<sec:ifAllGranted roles="ROLE_ADMIN">
<meta name="layout" content="main"/>
</sec:ifAllGranted>
<sec:ifNotGranted roles="ROLE_ADMIN">
<meta name="layout" content="login"/>
</sec:ifNotGranted>
<title>Home Page - Admin Panel</title>
</head>
有两个问题:
配置WOR ks像我所料,但是当我输入浏览器:
localhost:8080/AdminPanel/login/auth
页面仍然存在,我可以访问它甚至是注销用户。我想彻底删除这个URL,无论是登录还是注销用户都不应该能够访问它。即使用户是尽管我有我在上面index.gsp中的mentiond代码,它应该改变布局
"login"
注销,/login/auth
视图是使用"main"
布局呈现。为什么?
在此先感谢!
不确定如何最好地禁用默认的'/ login/auth'映射,而是将'/'映射到登录页面,你可以将这一行添加到'UrlMappings':'“/”(controller:“login “,action:”auth“)'对于#2,默认的SpringSec'login/auth.gsp'视图应用主布局。 –
@Andrew Addin UrlMappings对我没有任何帮助。我更改了网址,但它并没有将我重定向到索引。它仍然呈现/ login/auth/page。一切开始看起来像我必须改变LoginController ... – kmb
最后,我删除了额外的URL映射,我改变了auth.gsp。现在,它看起来像:
一切似乎运作良好,但我不能访问$ {闪存。消息}在我的布局,但也许我只是做错了什么。 – kmb