2017-01-31 91 views
0

目前,我已经使用身份框架创建了WebAPI项目,并且在使用API​​进行身份验证时设置了令牌。使用Web API令牌对MVC客户端进行身份验证

所以现在我正在创建一个独立的MVC应用程序,它允许用户调用WebAPI来获取后端数据。

目标是分离功能,以便其他应用程序也可以开始通过Web调用与后端数据进行交互。

因此,现在的困惑是如何设置我的MVC项目,以便我可以使用从WebAPI接收到的令牌在控制器上使用授权属性。我想我需要在Startup.Auth.cs中的ConfigureAuth方法中启用承载令牌。但是,这足够吗?或者我还需要启用cookie身份验证?

回答

1

MVC和Web Api在认证方面有着根本的不同。使用Web Api时,必须在请求的头部设置不记名令牌,但这不是问题,因为所有API请求都是由客户端以编程方式完成的,也就是说,在设置客户端以验证请求时涉及人为干预正常。

MVC是一种不同的野兽,因为动作通常通过网络浏览器访问,而浏览器不会自动将承载令牌附加到请求头。 做的是将由服务器设置的cookie传递回服务器。这就是为什么Cookie身份验证最常用于MVC Web应用程序的原因。

您应该做的是为MVC网站启用Cookie认证,然后设置您的登录操作以通过Web Api进行认证。当您从Web Api获取有效的身份验证时,您可以通过Identity API手动登录用户:

await SignInManager.SignInAsync(user); 
+0

好的很有意义。那么,为了利用授权属性,只需要在同一个cookie中登录后请求和存储声明和角色? – foop

+0

本质上,是的。 –

+0

我还必须创建ApplicationSignInManager实例的一个新实例,ApplicationUserManager?但我不想创建一个DbContext的新实例,因为我不想直接与Identity Db进行通信。只能通过API调用。 – foop

相关问题