我正在开发一个C#WebApi / MVC项目,该项目具有相当大的工作流程,用于创建用户并放置他们所需的信息 . 涉及大约10个主要步骤,其中技术上可以花费用户数小时来填写 .
第一步采用标准的基本信息,如用户名,密码,电子邮件,姓名,地址等 .
我想要做的是在第一步成功之后,发送一个休息调用,在用户表中创建基本用户,然后准备一个会话,以便在接下来的步骤填写任何字段时的后续步骤,它会自动发送ajax调用并更新数据库中的字段 .
虽然这在理论上使用会话(我可以在MVC中完成)听起来简单易行,但我希望在RESTA的WebApi中执行此操作,其中REST应该是STATELESS .
有没有人遇到类似的问题,如果有的话,他们推荐什么作为一种方法?我目前可以想到的选项是:
-
为此过程删除标准MVC的REST,并将WebAPI仅用于Read而不是Writes,因为唯一的Write过程是用户/帐户的初始创建 .
-
使用身份验证令牌?但这可以成功处理这个过程吗?
-
创建用户后,将每个REST调用的用户名/密码作为WebAPI的身份验证?将用户/密码存储在MVC会话中并直接从MVC调用API,移动应用程序只会将用户名/密码存储在应用程序中并调用WebAPI(我认为这是最合适的)
任何人都可以告诉我这些选项是否是最佳实践,或者是否有人有更好的最佳实践/流程?我希望尽可能多地编写一些内容来覆盖Web和Mobile,而不是必须复制进程 .
提前致谢!!!
1 回答
我会考虑修改常规的WebAPI OWIN寄存器流程 .
收集基本用户信息并通过Ajax发布到Web API . 如果成功 - 将OWIN令牌发送回HTTP头中的调用者 .
继续执行用户信息更新的额外步骤(例如,通过HTTP PUT)并将令牌放入authenticate标头中 . 使用“授权”属性标记WebAPI更新过程 .
这个blog post可以帮助设置WebAPI以发布和接受承载令牌 .