吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2709|回复: 2
收起左侧

[会员申请] 申请会员ID:fls119

[复制链接]
吾爱游客  发表于 2016-1-25 19:29

1、申 请 I D:fls119
2、个人邮箱:2871710618@qq.com
3、原创技术文章:

                             
REST API 基于ACCESS TOKEN 的权限解决方案     


REST 设计原则是statelessness的,而且但客户端是APP时,从APP发起的请求,不是基于bowers,无法带相同的sessionid,所以比较好的方案是每次请求都带一个accesstoken进行验证。然后后台是根据token 找到用户,然后找到用户资源
但总不能每个方法都去调用token验证的方法,也不能每次验证都需要查询数据库吧!
解决办法:
  • 为了业务层只关注业务,所以需要把token验证的方法在进入controller前集中处理,用 Interceptor实现
  • 由于根据token获得用户,只需要用到 用户ID,用户登录名等 不会改变的信息,用缓存实现,需要支持过期失效,ConcurrentHashMap没有过期失效的功能,自己懒得实现就用ehcache
  • 集中处理token   interceptor实现:

    interceptor实现

    interceptor实现



  • 然后到spring配置文件中加上这个拦截器:

  • {:1_916:}

    2

    2

  • 缓存处理
    pom.xml中加入ehcache包:(spring集成ehcache ,需要spring-context和spring-context-support)

  • 3

    3
  • 加入ehcache.xml,大部分都是默认,参考springside里面说的,改了updateCheck="false",

  • 4

    4



开启缓存,在spring配置文件中加入:


5

5



对verifyAccessToken 方法做缓存处理,也就是在原有方法上加Cacheable注解:


6

6



开始run出现 java.io.NotSerializableException: cn.ifengkou.athena.model.User
User 实现序列化,再试:
前端请求三次的日志,可以看到verifyAccessToken只执行了一次

7

7

如有token无效,查出来User为null,cache 把null也缓存起来了

keywords:REST,accesstoken,权限,spring,ehcache,interceptor

















发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

Hmily 发表于 2016-2-2 15:48
看起来是从转载过来的,原创吗?
Sp4ce 发表于 2016-2-3 16:28 来自手机
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 19:45

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表