我在2部分中创建应用程序。在一台服务器上是一个使用Owin的.net Webapi2。在另一台服务器上是一个MVC5网站,目前没有登录,将作为api的前端。这也是一个很好的卖点,表明应用程序本身就是客户可以开发的一个例子,因为它依赖于相同的api。我把用户认证的东西放在api中,因为我需要第三方能够使用api开发自己的前端应用程序。如何让MVC5客户端通过远程WebApi2应用登录?
我正在试图完成的(理论上) 我需要有一个用户提交前端他们的登录信息将通过resourceownergrant型验证他们的身份,并收到效果,使前端创建一个包含accesstoken和identityuser /角色的cookie。只要这个cookie存在,mvc应用程序就会使用accesstoken调用api。 MVC应用程序和API都将能够使用[授权]属性。
我有什么到目前为止 我有API起来和工作,我可以张贴“grant_type =密码&用户名= testuser的&密码= password123”我收到这样的事情在JSON
{
"access_token":"-longasstokenhere-",
"token_type":"bearer",
"expires_in":1209599,
"userName":"testuser",
".issued":"Thu, 03 Apr 2014 16:21:06 GMT",
".expires":"Thu, 17 Apr 2014 16:21:06 GMT"
}
网络API的回应也有
set-cookie: -Long-assserializedcookiestuffhere-
头我的问题是如何连接我的MVC应用程序。
在我mvc5应用我有一个启动的owin这一套在configureauth
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
CookieName = "MyCookie",
LoginPath = new PathString("/Account/Login")
});
我见[授权]属性的测试页,当我参观,它正确地重定向设置上我到登录页面。我缺少的是如何做到这一点,使点击登录使网站发回api并创建一个Owin Cookie,网站将使用该cookie允许用户通过[授权] attibute。我也希望它包含identityuser,所以web应用程序将自动获得用户信息,而不必在每次调用时都回发到api。我不知道我能否以某种方式或返回的结果抓取cookie。
此外,如果他们有更好的方式,我愿意接受建议。
Heeelp!?
嘿,我试图使用你的实现原因即时通讯使用JWT令牌,它的工作很好,当我在角度使用它,并在标题中发送令牌...但我需要我的MVC有时切换视图,所以我需要一个cookie让我登录mvc ...但即使使用您的代码,我仍然不会通过控制器中的授权...我在哪里可以调试JWT中的授权属性中发生了什么? – Shakawkaw