1

我正在构建一个 Django Web 应用程序,其 api 使用基于令牌的身份验证,而不是基于会话的身份验证。该 api 由 web 应用程序的前端和单独的移动应用程序使用。我很难弄清楚如何登录。我的第一个想法是做我计划在移动应用程序中做的事情:登录表单只是 POST 到创建并发送回访问令牌的端点,然后访问令牌保存在浏览器/应用程序存储中与未来的请求一起发送。这在移动应用程序的上下文中似乎是有道理的,但对于浏览器来说,这似乎有点奇怪。这种方法的一个问题是,即使在注销后内部页面仍然可见。用户可以注销,然后点击返回按钮,然后浏览网站。即使所有的 api 调用都会失败,

在我看来,不同之处在于,在移动应用程序中,只有 api 调用才需要身份验证,因为静态内容已经在设备上,不需要获取。但是,在 Web 应用程序中,需要提供静态内容,如果用户未登录,则可能不应该提供。

仅使用基于令牌的身份验证是否不常见?我是否需要对静态内容使用基于会话的身份验证,以及对 api 使用基于令牌的身份验证?

这通常是如何完成的?

编辑:我正在使用 django-rest-framework,所以一个简单的方法来处理这个也将不胜感激。

4

1 回答 1

1

连接您的 JS API 调用,以便身份验证失败会将当前页面重定向回登录页面。

$http({url: "/api/v1/thing"})
    .success(function(data, status, headers, config) {
        // Do something
    })
    .failure(function(data, status, headers, config) {
        if (status == 403) {
             window.location.href = "/login/?next="+window.location.href
        }
    })
于 2014-07-03T02:38:20.393 回答