博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SpringMVC拦截器的使用详解
阅读量:4572 次
发布时间:2019-06-08

本文共 2855 字,大约阅读时间需要 9 分钟。

SpringMVC拦截器的使用详解生活就是这么的悲剧 ,刚写完成的内容没有保存,结果Notepad++  crash 啦 ,我看到之后也crash 了 从头再写一遍,这版会简单很多 ,先写到这。获取个人信息成功,接着写拦截器.前IBM同事Vincent 做过 一个java web 和 mobile 的w3 授权的项目,我从每天的daily standup 中了解了一些关于w3 授权是一件很麻烦的事情。现在我们的一个项目也涉及到权限登录和角色分配的问题 。 sso 单点登录 usf 用户权限角色管理解释 :sso 单点登录是强制只有内容的同事才能登录系统usf 要求登录的用户是我们系统的注册用户 ,并且分配了适当的角色,所以我们可以是认为这是两重用户验证。usf 是为了跟项目业务相关的内容区分开后单独做的一个服务,对于面向微服务架构而言,这无疑是我们学习的特别好的案例。-----------------------------------上面谈到的是基本业务要求和要实现功能需要接入的基础服务 -----------------------------------------------------------------下面我们要谈谈怎么实现这两个拦截器的配置以及登录用户session的管理 -------------------先说下spring mvc 的默认拦截器DispatcherServlet ,本拦截器一般是配置web.xml中的 
selection
org.springframework.web.servlet.DispatcherServlet
1
selection
/
也就是说所有的web 请求都需要请过该servlet 处理 同时在我们的另外一个servlet-name.xml 中我们配置了
,下面简单讲下该配置的作用 在springMVC-servlet.xml中配置
后,会在Spring MVC上下文中定义一个org.springframework.web.servlet.resource.DefaultServletHttpRequestHandler,它会像一个检查员,对进入DispatcherServlet的URL进行筛查,如果发现是静态资源的请求,就将该请求转由Web应用服务器默认的Servlet处理,如果不是静态资源的请求,才由DispatcherServlet继续处理。一般Web应用服务器默认的Servlet名称是"default",因此DefaultServletHttpRequestHandler可以找到它。如果你所有的Web应用服务器的默认Servlet名称不是"default",则需要通过default-servlet-name属性显示指定:
sso 单点登录 和 usf 登录都属于 spring mvc 的拦截器 sso 和 usf 都需要配置相应的依赖 jar 或是 mvn 文件 同时需要在xml 文件中显示的神明对他们的使用 ,并 最终配置到 web.xml 中 usf 的配置code ,exclude-mapping 应该就是属于静态资源,将转由tomcat 等默认服务器的servlet 进行处理
class 当然就是默认对应的类 ,使用 usf 的服务获取数据,进行权限,角色判断 并返回对应数据结构 ,如果是一切都判断都没有异常 ,那么web 发出的请求将继续往controller 端进行, 相反,就会发出告警,提示 ,结束本次访问AuthManagerInterceptor 需要继承 类 HandlerInterceptorAdapter or HandlerInterceptor 并实现相同的方法 在这里我们要实现的方法是 boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)关于更多的其他拦截器方法的内容 请参考相关资料 sso 和 usf 服务可以单独 配置一个 文件中 。sso-usf-interceptor.xml ,并将该文件注入到 servlet 中 project-name-servlet.xml
servlet 文件在注入到 web xml 文件中
contextConfigLocation
classpath*:project-name-servlet.xml
从而完成整个拦截器的配置 --------------------------------------------------------------------------------因为usf 降到的用户角色和权限的内容 ,自然就少不了session 相关话题的讨论 在授权文件中,我们把得到的用户信息送到一个实体数据中 ,并通过HttpServletRequest 塞入getSession 中 ,作为全局变量使用 request.getSession().setAttribute(AuthConstants_key, 实体数据);从而在下次发起获得登录用户信息展示在页面 或条用其他接口时就可以通过 HttpSession session 获取该信息了 ,不用再次对数据库发起信息请求session.getAttribute(AuthConstants_key);--------------------------------------------------------------------------------------done

转载于:https://www.cnblogs.com/TendToBigData/p/10501197.html

你可能感兴趣的文章
java设计模式之代理模式
查看>>
spring心得2--bean的生命周期@Spring监听器的作用@Spring初始化容器案例分析@web项目使用...
查看>>
顺序栈
查看>>
Rsync详解
查看>>
【每日一读】Java编程中“为了性能”尽量要做到的一些地方
查看>>
什么是内网、什么是公网、什么是NAT
查看>>
【堆/排序】堆排序的两种建堆方法
查看>>
类的内置方法
查看>>
项目中使用的第三方开源库
查看>>
NOIP2009 潜伏者
查看>>
本地预览的vue项目,在githubpage静态展示
查看>>
SC命令---安装、开启、配置、关闭 cmd命令行和bat批处理操作windows服务
查看>>
Register Form Code
查看>>
iphone 如何清空UIWebView的缓存
查看>>
Java——变量
查看>>
定时关闭AWS上的EC2机器实例
查看>>
grep、awk、sed命令详解1
查看>>
Jenkins邮件配置
查看>>
MYSQL数据库的设计与调优
查看>>
在Apache下开启SSI配置
查看>>