asp.net mvc如何搞token ?

东莞小甜甜 2017-07-21 01:00:59
需求:在登录网站时勾选复选框的”自动登录".需要用到token保持登录状态。

看了一天的token相关的文章了,有几个问题:

1。就是【用户id + 用户名 + UserAgent + 过期时间】 这样的MD5加密字符串吧?

2。服务器保存的token是保存在Cache的缓存里,还是数据库呢?

3。用户客户端的token到底是保存在Cookie还是local storage、session storage呢?


4.在文章中有提到放在Authorization header里。这是什么意思呢?是不是传输这token都用HTTP header携带token呢?


实在是看了十多篇文章没搞懂,想在CSDN里确认下。望高手指点迷津,感谢!!!
...全文
1189 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhanglong_longlong 2017-07-21
  • 打赏
  • 举报
回复
引用 8 楼 sirgles 的回复:
[quote=引用 6 楼 hanjun0612 的回复:] 我这边就是通过 md5(uid+时间) 来产生token。 放缓存里,设置了3天过期时间(具体多久过期,看你业务需要) 主要是,你需要有一个filter来拦截所有的请求。 给予生成和认证token的机制。 这个你查查就知道了。
刚才和群友聊到这个话题。有群友说服务器生成token,然后token只需要保存在客户端就好了,服务端不需要保存token,只负责解密token,从客户端token里拿到uid \ 过期时间,和DateTime.Now判断是否过期,过期就失效就好了。认为这种做法妥当么?[/quote]你加下群发个demo你看看吧
正怒月神 版主 2017-07-21
  • 打赏
  • 举报
回复
引用 8 楼 sirgles 的回复:
刚才和群友聊到这个话题。有群友说服务器生成token,然后token只需要保存在客户端就好了,服务端不需要保存token,只负责解密token,从客户端token里拿到uid \ 过期时间,和DateTime.Now判断是否过期,过期就失效就好了。认为这种做法妥当么?
都可以
东莞小甜甜 2017-07-21
  • 打赏
  • 举报
回复
引用 6 楼 hanjun0612 的回复:
我这边就是通过 md5(uid+时间) 来产生token。 放缓存里,设置了3天过期时间(具体多久过期,看你业务需要) 主要是,你需要有一个filter来拦截所有的请求。 给予生成和认证token的机制。 这个你查查就知道了。
刚才和群友聊到这个话题。有群友说服务器生成token,然后token只需要保存在客户端就好了,服务端不需要保存token,只负责解密token,从客户端token里拿到uid \ 过期时间,和DateTime.Now判断是否过期,过期就失效就好了。认为这种做法妥当么?
东莞小甜甜 2017-07-21
  • 打赏
  • 举报
回复
引用 5 楼 zhanglong_longlong 的回复:
引用 2 楼 sirgles 的回复:
自顶希望有人能看到。
文章都发你了,自己看啊
感谢,你发的文章刚才看了下,我不是用在webapi呢,是mvc 自动登录的功能,难道和这webapi保持登录一样的吗?感谢!
正怒月神 版主 2017-07-21
  • 打赏
  • 举报
回复
我这边就是通过 md5(uid+时间) 来产生token。 放缓存里,设置了3天过期时间(具体多久过期,看你业务需要) 主要是,你需要有一个filter来拦截所有的请求。 给予生成和认证token的机制。 这个你查查就知道了。
zhanglong_longlong 2017-07-21
  • 打赏
  • 举报
回复
引用 2 楼 sirgles 的回复:
自顶希望有人能看到。
文章都发你了,自己看啊
  • 打赏
  • 举报
回复
要运用你的悟性来理解、简化、重构、丰富、创造,不要用惰性来猜概念。
  • 打赏
  • 举报
回复
用什么方式计算 token 对于客户端来说毫无意义,主要是创建一个比较随机的编码即可。对于客户端来说,它从服务器端获得token 编码,它每一次提交请求时都带上 token,客户端又不需要计算这个 token,它原样复制这个值,所以纠结什么东西组成 token 是无意义的。在服务器端,其实可以使用一个 guid 编号来作为 token 发给客户端即可。至于说纠结于服务器端用一堆东西的计算产生 token,这除非是说出必要性,否则是多余的凑“篇幅”的一些冗余之作。 服务器把数据保存在哪里,客户端保存在哪里,在这里有什么关系?你并没有说出目标是什么,而是从最底层开始慢慢拼凑结果。这就不能在设计和测试、重构中始终关注目的,而是总是离目标差一点距离。 放在 HTTP heade 或者放在 body 中,或者放在 url 参数中,其实都不改变 token 的本质。比如说微信就是始终在 url 上来从客户端向服务器提交所获得的授权码(token和 code)的。
东莞小甜甜 2017-07-21
  • 打赏
  • 举报
回复
自顶希望有人能看到。

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧