webapi设计问题 【都来讨论讨论】

lhx527099095 2015-08-10 10:06:35
由于前期只有web 后期会有app所以想考虑把webapi单独出来做成独立的apiserver
所以这样设计怎么样
mvcweb起一个项目
把webapi的controller的类单独一个类库
前期先在web里面直接引用 结合在一起用
后期把webapi单独出去一个server

然后问题就来了如果前期一起用的话权限验证这块需要先考虑起来么
如果考虑的话我是这样设计的
HMAC+Token的混合

HMAC
给web 安卓 ios分配三个appid 和appkey
然后hash了sign一起当参数传给webapi去验证
这里的问题是web里面appid和key在前端jquery调用webapi的时候直接暴露问题怎么解决

token
这块我确实还没想好怎么能用好 用户登录这块还是想着能放cookie里
要么就用户的token存在cookie里面?可是用户退出的时候token怎么清除呢
还有token的存储和过期策略

求有这方面架构设计的大牛给个大致实例
最好考虑下今后的扩展性 比如要做集群的时候有哪些影响

先谢过~~~~~~
...全文
196 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
myhope88 2015-08-11
  • 打赏
  • 举报
回复
路过,来学习的
lhx527099095 2015-08-10
  • 打赏
  • 举报
回复
大牛快快出来~~~~无聊的问题解答完了 来回答我的费脑问题啊~~~~
lhx527099095 2015-08-10
  • 打赏
  • 举报
回复
补充下还有个CORS的问题 开始的时候是想搞个开关 前期没有单独出去的webapi先关掉 后期如果开放出去 就打开 方便安卓和ios调用 有什么注意的点没??
lhx527099095 2015-08-10
  • 打赏
  • 举报
回复
引用 6 楼 starfd 的回复:
的确是会有一次的query浪费,但其实你最终会发现,你提供给移动端的api,80%的可能会不同于提供给web的api,因为移动需要考虑流量的问题,或者你可以MVC和API公用底层部分,这样也就不存在web调用api的问题,web调用的也还是自己的底层,只是和api公用了一套底层代码而已
明白了 那这样的话我web就不考虑用webapi了 mvc直接用还方便点 回头移动端单独包装api给他用 确实像你说的 同一套api估计也不适用 底层代码肯定是共用的类库 大部分东西抽取到业务逻辑层里面做吧 就是有点代码浪费 mvc webapi ---------------------------------- business ---------------------------------- Dao
  • 打赏
  • 举报
回复
的确是会有一次的query浪费,但其实你最终会发现,你提供给移动端的api,80%的可能会不同于提供给web的api,因为移动需要考虑流量的问题,或者你可以MVC和API公用底层部分,这样也就不存在web调用api的问题,web调用的也还是自己的底层,只是和api公用了一套底层代码而已
lhx527099095 2015-08-10
  • 打赏
  • 举报
回复
引用 4 楼 starfd 的回复:
因为不依赖状态,所以HMAC部分扩展理论上不存在扩展性困难,只需要考虑分布式缓存问题
终于有回复了 那么按照你的方案就会有一次query的浪费 ui用jquery调用mvc mvc controller再调用webapi取得json结果直接返回 这样就饶了一圈其实 还有就是你所说的 首先,不是所有的api都需要Sign的 这个就有个问题就是怕有人恶意的掉我们的程序 这样会不会直接吧apiserver跑死 所以我的倾向是所有call都验证
  • 打赏
  • 举报
回复
因为不依赖状态,所以HMAC部分扩展理论上不存在扩展性困难,只需要考虑分布式缓存问题
  • 打赏
  • 举报
回复
你对于HMAC的问题就在于UI部分进行Sign时会有问题,首先,不是所有的api都需要Sign的,其次,你可以将参数传递给MVC,然后MVC调用API,即组织Sign的过程在后端执行 API建议你一开始就独立建设,不要考虑后续,因为一旦代码存在耦合后,后期想要分离的难度就要高很多 CQRS是只针对UI前端的,后端代码访问不存在CQRS问题

62,047

社区成员

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

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

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

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