消息关闭
    暂无新消息!

WebApi 中如何状态保持

问题作者 : 聪少2017-07-14发布
我在学习WebApi的过程中遇到个问题,因为Api和MVC的状态保持机制不同,WebApi不推荐使用Session这些机制,而我想实现用户第一次登录到数据库中验证用户名密码,并将登录后的信息保存在服务器中,比如 key: value 的形式,将key返回给浏览器,下次浏览器再访问把key传给服务器,服务器直接取出value就行了,不用再去数据库查询。但是有几个问题:
1、返回的key可以是服务器生成的guid吗?反正不会重复,不会有安全问题吧?
2、如果将这个键值对存在服务器端(不使用Redis之类的Nosql)有什么比较好的方案?因为数据量很小,应该用不上Redis

5个回答

︿ 2
1 guid可以,没有问题
2 觉得redis有点大材小用,那就用cache,设置一下过期时间就可以了。
︿ 1
1. guid 非常好。

2. 可以使用asp.net 数据 cache。肯定不能想当然地以为asp.net 数据不会丢失,所以数据都是先存在数据库中,然后使用 cache 来自动化地缓存。
︿ 1
首先,不推荐使用,但不是意味着不能使用,迫不得已还是可以用的。其次api建议使用token许可这种验证方式,而不是服务器记录Session,你可以去参考下微信api,百度地图相关api,微信api的调用方式
︿ 0
用GUID 这是没什么问题的。其实用TOKEN 也是可以的,只要能保证这KEY得唯一就好了,另外你还要考虑过期的问题。
如果你的项目仅仅是内部使用则无关紧要,如果是公网使用那么你需要关心的就这个key的过期时间,不能这个KEY 就完全给这个用户单独使用了,如果有人把KEY 挖出来了,那你的系统安全性怎么保证。另外就是丢失的问题,丢失肯定是存在的,所以,你不管是用缓存还是什么,先保证这个东西不能丢失,那么你需要将其存入一个地方,不管是数据库,队列,REDIS这些东西里面。这样才能保证你的系统正常。虽说这个丢失的偶尔性不常见,但是你是要考虑进去的。