【问题标题】:How to persist and authenticate users from an MVC application to a Web API如何将用户从 MVC 应用程序持久化并验证到 Web API
【发布时间】:2016-06-17 01:16:34
【问题描述】:

因此,我们目前正在寻求构建一个站点,该站点利用 Web API 进行所有身份验证以及与数据库的通信。我们目前不确定的是如何通过 Web API 进行身份验证来将用户持久保存在我们的 MVC 应用程序中。

这在 MVC 方面发生在什么地方,我们应该如何使用 Web API 进行身份验证?

编辑:我想知道的另一件事是,我们是否可以在身份用户通过身份验证后调用 API 以获取身份用户,并在 MVC 端实例化身份用户并将它们存储在会话变量中以保持持久在我们的应用程序上。这是可行的吗?知道它会是什么样子吗?

【问题讨论】:

    标签: c# asp.net-mvc authentication asp.net-web-api


    【解决方案1】:

    MVC 使用会话进行身份验证。一个 cookie 被发送给用户,Web 浏览器将该 cookie 与每个请求一起发回,以使服务器能够恢复会话并将用户识别为已通过身份验证。

    Web Api 基于 REST 且无状态。没有会话、cookie 等概念。每个 Web Api 请求都必须在请求中进行身份验证,通常通过传递带有不记名令牌或类似内容的 Authorization 标头。

    如果 MVC 应用程序使用 Web Api 进行身份验证,则 Web Api 应该向 MVC 应用程序返回一个身份验证令牌。然后,MVC 应用程序应该通过设置正常的身份验证 cookie 并保存令牌来“登录”用户,以便它可以使用它来验证未来的 Web Api 请求。换句话说,MVC 应用程序仍然像往常一样处理授权。唯一的区别是 Web Api 的响应决定了它是否认为用户名/密码组合是正确的,而不是直接进行数据库查询。

    【讨论】:

    • 我要补充一点,对 WebAPI 后端的所有请求也应该经过身份验证(令牌应该在 Authorization 标头中传递并检查)。在 MVC 方面处理身份验证/授权是不够的,因为任何试图恶意破坏您的系统的人都会直接攻击您的 WepAPI,他们不会使用您的 MVC 客户端来这样做。
    • 在我的回答中我说:“保存令牌,以便它可以用它来验证未来的 Web Api 请求”。但是,以防万一不够明确,是的。
    猜你喜欢
    • 1970-01-01
    • 2013-12-04
    • 1970-01-01
    • 1970-01-01
    • 2014-06-11
    • 2011-12-16
    • 2017-10-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多