Grails 1.3.7 Spring-Security-Core 1.1.2
我已经实现了一个扩展AjaxAwareAuthenticationSuccessHandler的自定义类,以便在登录后可以将特定的角色带到特定的URL,这很有用。但是,如果会话过期,我需要能够在会话过期时将用户带到请求的URL,从而覆盖基于角色的URL。
以下是我的代码的简化版
class MyAuthSuccessHandler extends AjaxAwareAuthenticationSuccessHandler {
@Override
public void onAuthenticationSuccess(final HttpServletRequest request, final HttpServletResponse response,
final Authentication authentication) throws ServletException, IOException {
def goAdmin = false
authentication.authorities.each { ga ->
if (ga.authority.equals('ROLE_ADMIN')) {
goAdmin = true
}
}
if (goAdmin) {
response.sendRedirect(request.contextPath + '/admin/index')
}else{
super.onAuthenticationSuccess(request, response, authentication)
}
}
}
我尝试添加一个对DetermTargetUrl(请求,响应)的调用,但它总是返回'/',即使我已经请求了像/ admin / foo这样受保护的资源。
感谢。
答案 0 :(得分:0)
请求
super.determineTargetUrl(request, response);
如果你使用SavedRequestAwareAuthenticationSuccessHandler
作为超类,那么应该有用。我不确定您是否可以在您的方案中切换到此类。也许这会有所帮助,但我想你完全了解它:http://omarello.com/2011/09/grails-custom-target-urls-after-login/