我正在使用带有grail 2.3.3的spring-security-core:2.0-RC5,并通过Requestmap dB系统控制网页访问。

身份验证后,我无法登录到应用程序并将其定向到相应的网页。

我已使用defaultTargetUrl配置设置来定义成功登录后的去向。

这是一个开发应用程序,其根URL为:http://localhost:9002/VidPlay

我有两个角色不同的用户:

约翰1-与ROLE_ADMIN + ROLE_USER

Mike1-仅ROLE_USER

如果将defaultTargetUrl设置为/ home / index

以John1身份验证登录并成功进入URL:http://localhost:9002/VidPlay。为什么不转到http://localhost:9002/VidPlay/home/index,登录后即可访问?

以Mike1身份验证登录后,登录到URL:http://localhost:9002/VidPlay,但正确访问失败。再次说明为什么不转到http://localhost:9002/VidPlay/home/index,登录后即可访问?

似乎两个登录名都重定向到了http://localhost:9002/VidPlay,但我不知道为什么,尽管事实上一旦登录我就可以转到这些页面?

如果defaultTargetUrl设置为/ Requestmap / index。

以John1身份验证登录并成功进入URL:http://localhost:9002/VidPlay/Requestmap/index

在Mike1进行身份验证时登录并重定向到URL:http://localhost:9002/VidPlay,但正确无法访问。

似乎将Mike1重定向到http://localhost:9002/VidPlay。以Mike1身份登录后,我可以转到http://localhost:9002/VidPlay/Requestmap/index。为什么不转到http://localhost:9002/VidPlay/Requestmap/index,登录后即可访问?

谢谢迈克

最佳答案

当用户访问安全的URL,但用户未登录时,Spring Security会将用户重定向到登录屏幕。成功登录后,用户将被重定向回原始URL。

您可以设置配置alwaysUseDefault = true,这将使spring始终在登录后将用户安全重定向到配置的defaultTargetUrl

grails.plugin.springsecurity.successHandler.alwaysUseDefault = true

09-05 21:05