我有一个带弹簧启动后端的Web应用程序,提供REST API和Angular.js前端作为单页面应用程序。 我是春天oauth设置的新手,所以我不确定我是否采用了正确的方式。
我的spring boot app配置为资源服务器和oauth身份验证服务器。每当前端通过401响应发出失败的api请求时,我指示Web开发人员对/ oauth / token端点进行POST调用以获取用户令牌。请求类似于:
POST /oauth/token HTTP/1.1
Host: localhost:8080
Authorization: Basic Z3J1Ym1hcmtldDp0dWFuZ291
Content-Type: application/x-www-form-urlencoded
grant_type=password&username=john.doe%40example.com&password=password
前端将获得用户令牌,并能够将API请求发送到受保护的api端点。
现在假设一个用例,匿名用户将一堆东西添加到他/她的购物车并点击结账按钮,这对后端的API请求失败,因为401.因此用户被重定向到表单登录我们的最后一个人写道。当用户输入他/她的用户名/密码时,UI代码向/ oauth / token发出POST请求并返回用户令牌。
现在的问题是,当用户被重定向时,用户的购物车已丢失。我们正在考虑使用redirect_url并将购物车项目编码到重定向网址中,并在用户成功登录后重定向到该网址。
问题是,我该怎么做。看起来像/ oauth / token的POST请求不会采用redirect_url参数并向该网址发回302响应。是否只有前端开发人员负责存储购物车并在登录完成后继续?
答案 0 :(得分:2)
oauth2规范的password
流程绝对不适合此用例,并且不支持重定向uri。支持重定向的流程为authorization code
和implicit
。