突然发现博客又扔了好几年了,今天想起来就记录点问题。
使用Shiro框架来进行权限验证,想要登录后跳转回之前的链接。需要使用Shiro的SavedRequest。
当跳转到登录页面时,Shiro会调用WebUtils中的saveRequest方法,将当前的SavedRequest进行储存。当登录成功之后,通过getSavedRequest取得之前得数据。以下为具体实现:
// 参数 HttpServletRequest request Subject user = SecurityUtils.getSubject(); try { user.login(token); } catch (IncorrectCredentialsException e) { ...... } SavedRequest savedRequest = WebUtils.getSavedRequest(request); // 登录前url savedRequest.getRequestUrl(); // 取得url之后对SavedRequest进行清空 // 如果未使用接口方式,可以直接跳转url并清空,使用WebUtils中的redirectToSavedRequest方法 WebUtils.getAndClearSavedRequest(request);