由于弹簧安全性,@ Controller被忽略

时间:2016-02-16 07:18:52

标签: java spring spring-mvc spring-security

当我有如下弹簧安全设置时:

<http pattern="/ui/**" auto-config="true" authentication-manager-ref="authenticationManager">
        <intercept-url pattern="/ui/login*" access="isAnonymous() or hasRole('USER')" requires-channel="${web.channel}" />
        <intercept-url pattern="/ui/**" access="hasRole('USER')" requires-channel="${web.channel}" />

        <form-login login-page="/ui/login" login-processing-url="/ui/j_spring_security_check" default-target-url="/ui/dashboard" />
        <logout logout-url="/ui/logout" logout-success-url="/ui/login" />
</http>

我的控制器被忽略,并且永远不会调用这两种方法。我已经尝试在它们内部添加断点但执行永远不会停止。我还尝试将System.out.println()添加到它们中,并且没有任何内容写入系统输出,因此我非常确定这两种方法都没有映射或者从未被调用过。

@Controller
public class MyController {

    @RequestMapping(value = { "/ui", "/ui/login"}, method = GET)
    public String indexNoTrailingSlash() {
        return index();
    }

    @RequestMapping(value = "/", method = GET)
    public String index() {
        return "redirect:/ui/dashboard";
    }
}

安全性正常,感谢xml中的 default-target-url =&#34; / ui / dashboard&#34; ,成功登录后,我会进入仪表板页面。但是,我想要实现的是,如果用户已经登录,用户也会被重定向到信息中心。我已尝试关注this answer这就是我需要的内容控制器。有没有办法映射这些方法,以便我可以使用我的控制器重定向或以某种方式重定向只有弹簧安全?

谢谢:)

1 个答案:

答案 0 :(得分:0)

如果您提供的答案链接是您所寻找的,请针对您的情况执行以下操作。

return new ModelAndView("redirect:/"); 

它将重定向到index()方法。