我使用spring安全核心编写了一个简单的hello world项目。基本上我有一个带有一个安全注释的控制器。
package springsecuritytest
import grails.plugin.springsecurity.annotation.Secured
@Secured(['ROLE_ADMIN'])
class HelloController {
def index() {
render "this is public"
}
def logout(){
}
}
所以,该应用程序符合并正常工作。当我尝试访问索引页面时,它会要求我登录,并且只有我有管理员角色才允许我访问该页面。
现在,我添加了一个用于注销的简单代码,我收到以下错误
package springsecuritytest
import grails.plugin.springsecurity.annotation.Secured
import grails.plugin.springsecurity.SpringSecurityUtils
@Secured(['ROLE_ADMIN'])
class HelloController {
def index() {
render "this is public"
}
def logout(){
redirect uri: SpringSecurityUtils.securityConfig.logout.filterProcessesUrl
}
}
我得到的错误如下:
The project was not built since its build path is incomplete. Cannot find the class file for org.springframework.security.core.GrantedAuthority. Fix the build path then try building this project
我感谢任何帮助!谢谢!
答案 0 :(得分:1)
您只需在config.groovy
中添加以下两行grails.plugin.springsecurity.logout.postOnly = false
grails.plugin.springsecurity.logout.afterLogoutUrl = "/login/auth"
并将链接“../logout”附加到注销按钮,如下所示
<a href="../logout">Sign out</a>
这样就可以了。您不必为注销处理创建任何操作。
请编译,清理然后运行您的项目。