我有两个webprojects:MyApp和Api.MyApp。 MyApp是MVC5应用程序,Api.MyApp是MVC WebAPI应用程序。
MyApp是一个富客户端应用程序,可以在大多数操作中调用API项目。对于授权,我正在为web api使用Bearer令牌,但我还想要一个cookie 所以我可以在主MyApp MVC项目中保护某些路由。
要获得持有人令牌,我打电话给" http://api.myapp/token"我可以将这个持有者令牌扔进一个cookie并让MVC项目识别它,或者我必须发送2个单独的调用,1到api获取持票人令牌,1到mvc应用程序获取cookie。这似乎有点多余,有更好的方法吗?
答案 0 :(得分:1)
是
假设您的应用程序正在响应以下内容:
用户通过www.example.com访问您的网站并提供其凭据。然后,您的应用程序向api.example.com发出AJAX调用以获取令牌。你现在有几个选择:
.example.com
.example.com
的cookie 如果您这样做,那么API和客户端应用程序都应该可以访问基于cookie的令牌。
如果您不使用.Net auth令牌,则可能必须根据持票人cookie推出自己的授权机制。
但是,如果您使用的是Intranet类型域(即http://myapp/
和http://api.myapp
),那么您必须使用选项2并使用cookie的默认域(您无法设置在域中只有一个句点的cookie,否则我可以将其设置为“.com”并在任何地方挥霍数据。)