拦截器实现未登录跳转
来源:互联网 发布:三维动画制作软件手机 编辑:程序博客网 时间:2024/04/30 15:39
下面用实际登陆跳转举例
1、写自己的拦截器implements HandlerInterceptor,实现跳转去执行拦截内容并传,执行拦截之后的URI
@Componentpublic class LoginRequiredInterceptor implements HandlerInterceptor {@AutowiredHostHolder hostHolder;//目前页面是需要登陆,如果没有登陆应该先跳到登陆界面@Overridepublic boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o) throws Exception { if (hostHolder.getUser()==null){ httpServletResponse.sendRedirect("/reglogin?next="+httpServletRequest.getRequestURI()); } return true;}@Overridepublic void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception {}@Overridepublic void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception {}}
2、WebMvcConfigurerAdapter中注册自己写的拦截器,并添加拦截路径/user/*
@Componentpublic class WendaWebConfiguration extends WebMvcConfigurerAdapter {@AutowiredLoginRequiredInterceptor loginRequiredInterceptor;@Overridepublic void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(loginRequiredInterceptor).addPathPatterns("/user/*"); super.addInterceptors(registry);}}
3、将要去往拦截事务的jsp,这是一个中间过渡页面。用@param后去得到URI,并添加到渲染的页面,也就是你需要临时跳转页面去view层中
@RequestMapping(path = "/reglogin")public String reglogin(Model model, @RequestParam(value = "next" ,required = false) String next){ model.addAttribute("next",next);//把拦截器带来的参数放在model层中去 return "login";}
4、到达拦截事务的jsp,处理拦截事务时候带上刚刚model中加入的参数
<input type="hidden" name="next" value="$!{next}"/>
5、到达拦截事务@Controller中,处理完成后,决定跳转
if (!StringUtils.isBlank(next)){ return "redirect:"+next;//登陆成功后跳转}
================================================
总结:
关于两次跳转方法发生的类:
第一次离开去执行自己写的拦截器,所以第一次redirect是在MyInterceptor中执行;
第二次是跳回来去执行一开始想要访问的页面,所以应该是在自己拦截器访问地址完成之后。如这里的loginController,之后。
关于几次跳转参数传递形式
第一次,redirect:reglogin+RequestURI();—-》controller[用@Param]—-》[model.addtribute]到达view层中—-》[
关于这里出现的两次Controller
第一次是跳到拦截事务中,第二次是拦截事务完成,[紧接着会执行拦截之后跳转]
0 0
- 拦截器实现未登录跳转
- angular 未登录状态拦截路由跳转
- Struts2拦截器 实现未登录拦截和权限控制
- Struts2拦截器 实现未登录拦截和权限控制
- springmvc 自定义拦截器实现未登录用户的拦截
- struts2拦截器--拦截未登录用户
- Struts 拦截器权限控制【通过拦截器实现登录后跳转到登录前页面】
- Struts 拦截器权限控制【通过拦截器实现登录后跳转到登录前页面】
- Struts 拦截器权限控制【通过拦截器实现登录后跳转到登录前页面】
- Struts 拦截器权限控制【通过拦截器实现登录后跳转到登录前页面】
- java-web实现拦截未登录用户
- JavaWeb拦截器,查看用户是否登录过,未登录禁止访问页面并且跳转到登录页面
- [转载]Struts2拦截器 实现未登录拦截和权限控制
- Struts拦截器拦截未登录的操作
- spring mvc拦截器之拦截未登录
- 在springmvc配置拦截器拦截未登录用户操作
- 过滤器和拦截器的比较及未登录用户权限限制的实现
- 过滤器和拦截器的比较及未登录用户权限限制的实现
- POJ3735【矩阵快速幂】
- java中如何忽略字符串中的转义字符--转载
- Android各种访问权限Permission详解
- Kafka+Storm+HDFS整合
- Linux下的目录及其操作命令(链接文件的命令
- 拦截器实现未登录跳转
- unity中对象池运用
- Python yield 使用浅析
- maven编写配置文件遇到的问题
- 线程安全
- 微信小程序-Testerhome
- 开始博客第一天
- okHttp的学习
- Mock Server利器 - Moco