最近项目上出现了用户登录超时之后,被跳转到了后台管理员登录页面的问题,查看发现是登录超时之后,被302到了后台管理员登录页面
也就是说,在某个地方指定了sessionid失效之后,重定向到了某个页面,查询配置发现如下配置
<session-management invalid-session-url="/login" session-fixation-protection="newSession" />
改成如下即可:
<session-management invalid-session-url="/errorpage" session-fixation-protection="newSession" />
在springmvc的配置文件中添加:
<mvc:view-controller path="/errorpage" />
需要注意的是session超时的重定向页面应当是不需要认证的,否则再重定向到session超时页面时会直接转到用户登录页面。
此外如果你使用这种方式来检测session超时,当你退出了登录,然后在没有关闭浏览器的情况下又重新进行了登录,Spring Security可能会错误的报告session已经超时。这是因为即使你已经退出登录了,但当你设置session无效时,对应保存session信息的cookie并没有被清除,等下次请求时还是会使用之前的sessionId进行请求。解决办法是显示的定义用户在退出登录时删除对应的保存session信息的cookie。
mvc:view-controller标签
如果发送的请求不想通过controller,只想直接地跳转到目标页面,这时候就可以使用mvc:view-controller标签
在配置文件中配置:
<mvc:view-controller path="/hello" view-name=“hello”></mvc:view-controller>
1
path=”/hello” 就是你访问的路径(相当于RequestMapping(“/hello”))
view-name=”hello”是你所要的视图(如hello.jsp,相当于return “hello”) 配置了这个后对于/hello请求,就会直接交给dispatcherServlet,然后使用ViewResolver进行解析。