Java grails如何在没有对象注入的情况下注入正在扩展savedRequestAwareAuthenticationSuccessHandler的类的bean
成功处理程序:Java grails如何在没有对象注入的情况下注入正在扩展savedRequestAwareAuthenticationSuccessHandler的类的bean,java,spring,grails,spring-security,dependency-injection,Java,Spring,Grails,Spring Security,Dependency Injection,成功处理程序: class SuccessHandler extends SavedRequestAwareAuthenticationSuccessHandler{ public void onAuthenticationSuccess(final HttpServletRequest request, final HttpServletResponse response, final Authentica
class SuccessHandler extends SavedRequestAwareAuthenticationSuccessHandler{
public void onAuthenticationSuccess(final HttpServletRequest request, final HttpServletResponse response,
final Authentication authentication) throws ServletException, IOException {
String targetUrl = determineTargetUrl(request, response)
redirectStrategy.sendRedirect(request, response, targetUrl)
}
@Override
protected String determineTargetUrl(HttpServletRequest request,
HttpServletResponse response) {
boolean hasAdmin =SpringSecurityUtils.ifAllGranted("ROLE_ADMIN");
boolean hasUser=SpringSecurityUtils.ifAllGranted("ROLE_USER");
if(hasAdmin){
return adminUrl;
}else if (hasUser){
return userUrl
}else{
return super.determineTargetUrl(request, response);
}
}
private String adminUrl
private String userUrl
public void setAdminUrl(String adminUrl){
this.adminUrl = adminUrl
}
public void setUserUrl(String userUrl){
this.userUrl = userUrl
}
}
资源:
import successHandler.SuccessHandler
// Place your Spring DSL code here
beans = {
authenticationSuccessHandler(SuccessHandler) {
adminUrl = '/admin/adminPanel'
userUrl = '/'
}
}
我想知道在没有创建任何对象的情况下,如何注入adminUrl
和userUrl
属性
据我所知,我们应该创建一个对象,例如def authenticationSuccessHandler
。这将使用Autowired创建对象,然后该对象将被注入资源bean中定义的属性
但是,在没有创建任何对象的情况下,如何注入属性呢?不确定这是否有帮助,但上面对grails应用程序说:当您点击
SuccessHandler
时,使用authenticationSuccessHandler
(覆盖underying方法),同时覆盖将adminUrl和userUrl设置为。。。您谈论的是注入,这通常是针对服务的注入,而这不是一个服务,没有任何代码可以命中SuccessHandler。我所做的只是扩展了SpringSecuritySuccessHandler类,它起了作用,但我不知道怎么做。在上述类中调用方法determinateTargetUrl()不需要创建SuccessHandler的对象吗?我没有为这个类创建对象,但是它工作了。知道怎么做吗?。我希望这能回答你的问题<代码>成功处理程序不需要调用方法determinateTargetUrl()成功处理程序正在执行自己的操作或自定义定义的操作。您正在覆盖resources.groovy中的默认值。我认为这个问题并不是一个真正的问题,因为你把注入和重写方法混淆了。您正在将authenticationSuccessHandler
注入默认的SuccessHandler
`我没有为类创建对象,但它工作了。你知道插件是如何工作的吗?甚至在你做这个改变之前,插件就已经工作了