我在Spring Security中使用Spring MVC。我在我的安全XML中有这个:
<security:form-login
login-processing-url="/login/j_spring_security_check"
default-target-url="/home"
authentication-failure-handler-ref="failureHandler"
login-page="/login"
/>
<security:intercept-url pattern="/Queue/**" access="IS_AUTHENTICATED_FULLY" />
<bean id="successRedirectHandler" class="org.springframework.security.web.authentication.SavedRequestAwareAuthenticationSuccessHandler">
<property name="useReferer" value="true"/>
</bean>
当我拨打此网址时:
/Queue/Home.html
我正确地重定向到登录页面,我登录,然后我被重定向回/Queue/Home.html
。
但是,当我使用我的控制器和@PreAuthorize
注释尝试相同的操作时:
@Controller
@RequestMapping(value = "/Queue")
public class QueueController {
@PreAuthorize("hasRole('IS_AUTHENTICATED_FULLY')")
@RequestMapping(value = "/Home", method = RequestMethod.GET)
public String showQueue(HttpServletRequest request, HttpSession sess, ModelMap model) {
..... brilliant code
return "some string";
}
我被正确地重定向到登录页面,然后我登录,但后来我被重定向到
/Queue/login
并发出一条消息,指出该页面不存在(因为它没有)。
我需要做些什么才能让@PreAuthorize
使用successRedirectHandler
吗?