我想问在http请求中,怎么才能确保是用户本人,我看了一些博客,说可以用session来解决,就是比较耗费服务器性能,但在请求参数中放用户ID又不安全,而且也容易被篡改信息,有人说要用token,但是token又怎么传输呢?放在cookie中吗?那这样是不是每次请求,后端程序员不是每个方法都要核实token,那样的话后端代码不会很臃肿吗?请各位大牛给个解决方案。
解决方案 »
- 看看,我tomcat是怎么回事!
- 关于JavaBean的一些疑问!
- 在struts2 中怎样获取servletContext对象
- 用Hibernate在MyEclipes Database Explorer 中连MSSQL2005报错,大家进来帮忙解决一下!!!
- 为什么sun.jdbc.odbc.JdbcOdbcDriver正常,oracle.jdbc.driver.OracleDriver有问题
- java高手请进!!!兄弟有个很难的问题!
- 求教!!!!如何得到select选定的值?
- 大家好,我想求hao123这样网站的源码,jsp的,越简单越好,谢谢,
- 动态刷新
- db2数据库表的字段存有<br/>,请问下在jsp页面怎么读出来就换行?
- SpringMVC文件上传报错
- Web.xml下加入监听器TomCat无法启动
你在token中可以存一个用户对象
你在token中可以存一个用户对象
那token不是一个简单的字符串吗?我感觉存对象的话有点信息不安全的感觉
你在token中可以存一个用户对象
那token不是一个简单的字符串吗?我感觉存对象的话有点信息不安全的感觉
不要把对象全部放进去,抽取一部分不敏感的属性做一个dto类,使用密钥+动态加密.
对象转字符串的话网上搜一下很多工具的,到时候解密再反序列化也方便
比如:
在xxxService.java中用
@TokenUser
User user
比如:
在xxxService.java中用
@TokenUser
User user
好像不行的,注解就是用来处理业务的,整个项目没有一个全局的东西,除了数据库和session
但每个方法都来这么一下,心里就是有点不舒服
所以想知道有没有什么方法可以直接核实token获取用户信息后能在业务层使用
不管是 过滤器 拦截器 aop切点 还是注解的方式
大佬们可以写一篇博客为我解惑吗?
可能登录接口写个加密文件来加密用户信息返回给前端
请求其他接口前端带这个加密参数过来就好了 后端解密
这样更方便些
加解密文件自己制定规则
不用考虑用token
首先 你怎么在拦截器层就知道程序后面会走哪些service类?你怎么拿到后面会运行的那些个service对象?另外 这些一般是单实例复用 这就涉及到并发中经典的火车票问题 如果不做锁就会出现拿错用户的情况 如果做了锁 那就没有性能了service层处理请求成串行了
可以在登录成功之后生成一个token,前端将token保存在本地,请求的时候放在request headers中,后端只需要在拦截器中做统一处理,不需要在业务中做判断,
分布式服务:
前端的处理方式还是不变,后端的校验交给网关统一处理,比如zuul、gateway等等。
需要注意的是在解决跨域问题的时候,在允许请求头参数的时候把你的token字段加上,否则会一直处于跨域状态