springmvc 拦截器与用户验证token
1:springmvc 配置文件中添加拦截器,当然首先要有拦截后交给哪个类处理也要写上
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/**"/>
<bean class="com.kad.authorization.AuthorizationInterceptor" />
</mvc:interceptor>
</mvc:interceptors>
以上 path=/**代表所有文件夹目录 .一般这么写就能拦截所有的请求了
<bean class="com.kad.authorization.AuthorizationInterceptor" /> 这个是处理所拦截的类
2:写@Authorization接口
就是下边几句.这个接口后来总结 就是告诉编译器这是个注解需要的接口, 访客访问到方法时,上边带上这个注解的, 在拦截处理方法中能拦截这些带注解的方法,并做相关处理
就像强制访客访问带了胸牌@Authorization 的方法,要做一次token验证的步骤,那些不戴@Authorization,又符合拦截规则的,就不做token验证,实际应用中,比如login register 等服务是不需要验证token的.当然项目需求不一样.所设置的规则不一样
package com.kad.authorization; import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target; /**
* 在Controller的方法上使用此注解,该方法在映射时会检查用户是否登录,未登录返回401错误
* @see com.scienjus.authorization.interceptor.AuthorizationInterceptor
* @author ScienJus
* @date 2015/7/31.
*/
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Authorization {
}
3:在处理类中处理添加了@Authorization 注解的 request请求, 一般来说验证token 正确返回true 错误返回false 一般就是401的错误
public class AuthorizationInterceptor extends HandlerInterceptorAdapter { @Resource
private TokenManager manager; public boolean preHandle(HttpServletRequest request,
HttpServletResponse response, Object handler) throws Exception {
//如果不是映射到方法直接通过
if (!(handler instanceof HandlerMethod)) {
return true;
}
HandlerMethod handlerMethod = (HandlerMethod) handler;
Method method = handlerMethod.getMethod();
//如果注明了@authorization,需要进行验证,进行验证返回401错误
if (method.getAnnotation(Authorization.class) != null) {
//从header中得到token
String authorization = request.getParameter("username");//.getHeader(Constants.AUTHORIZATION);
//验证token
TokenModel model = manager.getToken(authorization);
// 访问的不是下的,直接跳过
String name = handlerMethod.getBeanType().getPackage().getName(); /* if (name.contains("com.kad.app.action.user")) { return true;
} */
if (manager.checkToken(model)) {
//如果token验证成功,将token对应的用户id存在request中,便于之后注入
request.setAttribute(Constants.CURRENT_USER_ID, model.getUserId());
return true;
} else
{
response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
return false;
} }
return true;
}
}
测试
@Authorization
@RequestMapping(value="/AuthTest") public void Test(String username,String password )
{
Userinfo _uresinfo = null;
String gsonString = null;
客户端请求先到拦截器处理方法处理一下, 如果是false 直接就返回了,如果正确才会跳到这个Test方法内
springmvc 拦截器与用户验证token的更多相关文章
- SpringMVC拦截器实现用户登录拦截
本例实现登陆时的验证拦截,采用SpringMVC拦截器来实现 当用户点击到网站主页时要进行拦截,用户登录了才能进入网站主页,否则进入登陆页面 核心代码 首先是index.jsp,显示链接 1 < ...
- springmvc拦截器实现用户登录权限验证
实现用户登录权限验证 先看一下我的项目的目录,我是在intellij idea 上开发的 1.先创建一个User类 package cn.lzc.po; public class User { pri ...
- springmvc拦截器实现登录验证
首先创建一个实体类: Customer: 1 package com.petcare.pojo.base; 2 3 import java.sql.Date; 4 import java.sql.Ti ...
- SpringMVC拦截器(实现登录验证拦截器)
本例实现登陆时的验证拦截,采用SpringMVC拦截器来实现 当用户点击到网站主页时要进行拦截,用户登录了才能进入网站主页,否则进入登陆页面 核心代码 首先是index.jsp,显示链接 <%@ ...
- SpringMVC之拦截器实现登录验证
今天回头看之前发的javaweb学习路线图,发现把路线图中的也学的有一半多了,不过还是路漫漫.在前面的博客中有学习过spring的aop,它利用动态代理实现,在springmvc中也是一样,今天使用H ...
- SpringMVC拦截器+Spring自定义注解实现权限验证
特别提示:本人博客部分有参考网络其他博客,但均是本人亲手编写过并验证通过.如发现博客有错误,请及时提出以免误导其他人,谢谢!欢迎转载,但记得标明文章出处:http://www.cnblogs.com/ ...
- SpringMVC拦截器实现:当用户访问网站资源时,监听session是否过期
SpringMVC拦截器实现:当用户访问网站资源时,监听session是否过期 一.拦截器配置 <mvc:interceptors> <mvc:interceptor> < ...
- SpringMVC拦截器的使用
SpringMVC 中的Interceptor 拦截器也是相当重要和相当有用的,它的主要作用是拦截用户的请求并进行相应的处理.比如通过它来进行权限验证,或者是来判断用户是否登陆,或者是像12306 那 ...
- SpringMVC拦截器详解[附带源码分析]
目录 前言 重要接口及类介绍 源码分析 拦截器的配置 编写自定义的拦截器 总结 总结 前言 SpringMVC是目前主流的Web MVC框架之一. 如果有同学对它不熟悉,那么请参考它的入门blog:h ...
随机推荐
- Note_4.7
2019/4/7 奇奇怪怪的笔记 狄利克雷卷积 \(μ∗1=ϵ\),莫比乌斯反演 \(Id=φ∗1⇒φ=μ∗Id\) \(d=1∗1⇒1=μ∗d\) \(σ=Id∗1⇒Id=μ∗σ\) \(σ=φ∗ ...
- 【知识点】同样是消息队列,Kafka凭什么速度那么快?
同样是消息队列,Kafka凭什么速度那么快? 作者 | MrZhangxd Kafka的消息是保存或缓存在磁盘上的,一般认为在磁盘上读写数据是会降低性能的,因为寻址会比较消耗时间,但是实际上,Kafk ...
- 已知 sqrt (2)约等于 1.414,要求不用数学库,求 sqrt (2)精确到小数点后 10 位
问题:已知 sqrt (2)约等于 1.414,要求不用数学库,求 sqrt (2)精确到小数点后 10 位. 出题人:阿里巴巴出题专家:文景/阿里云 CDN 资深技术专家. 考察点:基础算法的灵活应 ...
- ubuntu之路——day11.5 迁移学习
在深度学习领域中,最强力的理念之一就是可以将神经网络学习的一种知识应用到另一个独立的任务中. 看上面的例子,首先我们有一个已经完成训练的神经网络,其目标是图像识别,我们有了绿色的1000000张图片并 ...
- T-MAX-冲刺总结
T-MAX-冲刺总结 这个作业属于哪个课程 班级链接 这个作业要求在哪里 作业要求的链接 团队名称 T-MAX 这个作业的目标 冲刺总结 作业的正文 T-MAX-冲刺总结 其他参考文献 面向B站,百度 ...
- Chrome 9229
Enable Inspector When started with the --inspect switch, a Node.js process listens for a debugging c ...
- ch341a编程器写操作超时失败
当点击自动编写‘提示写操作超时失败’要怎么样才能解决,下面我给大家分享一下! 方法/步骤 首先我们点击操作 选择操作选项 看看箭头所指的几个地方是不是都没打上勾 我们把这几个地 ...
- 【转】利用Python将多个PDF合并为一个
本脚本用来合并pdf文件,输出的pdf文件按输入的pdf文件名生成书签 使用示例如下: python pdfmerge.py -p "D:\pdf-files" -o " ...
- nginx基础模块
http://www.nginx.cn/doc/ 基础模块 HTTP Core模块* HTTP Upstream 模块 HTTP Access 模块 HTTP Auth Basic 模块 HTTP A ...
- PHP判断文件大小是MB、GB、TB...
<?php date_default_timezone_set ("PRC" ); function getFilePro($fileName){ if (!file_exi ...