我正在使用新的Grails Spring Security Core 2.0插件,我想知道如何自定义登录视图和LoginController / LogoutController?
以前版本的插件生成了这些文件,但现在看来我必须将它们从插件复制到我的项目中。这是正确的方法吗?
如果是这样,我可以将复制的控制器和视图放入另一个包中,然后放入原始包中。 IntelliJ似乎不喜欢在同一个包中使用相同的工件。
答案 0 :(得分:5)
默认情况下,版本2.0只能通过POST请求进行注销。要更改此设置以允许GET请求,请将以下内容添加到Config.groovy文件中。
grails.plugin.springsecurity.logout.postOnly = false
一旦你有了这个设置,你就可以直接链接到注销控制器以便注销
<g:link controller="logout">logout</g:link>
如果您想了解有关版本2中更改内容的更多信息,请查看What's New in Version 2.0文档
答案 1 :(得分:2)
另一种选择是使用remote link,默认情况下使用“post”方法
<g:remoteLink class="logout" controller="logout">${message(code: 'springSecurity.logout.link')}</g:remoteLink>
答案 2 :(得分:1)
我认为上述任何答案都没有真正回答这个问题。
如果您想覆盖网络应用中的控制器和视图,请将其复制到您的网络应用中。如果您愿意,您甚至可以为它们提供不同的包层次结构,因为spring-security-core插件似乎通过URL引用它们而您的将替换它们。
这是有效的,因为在主web-app中声明的控制器和视图优先于插件中的控制器和视图。
然而,如果你在另一个插件中这样做,那时事情变得有点棘手。 See this questiona and answer for a solution to that problem