Javascript 使用Angular.js处理基于OAuth令牌的身份验证?

Javascript 使用Angular.js处理基于OAuth令牌的身份验证?,javascript,angularjs,node.js,authentication,oauth,Javascript,Angularjs,Node.js,Authentication,Oauth,我已经在Node.js中设置了后端代码,以便使用passport成功地通过GitHub验证。我能够使用jsonwebtoken生成令牌。但是,由于OAuth的流,我在管理前端方面遇到了困难 如果这是基于他们输入电子邮件和密码的表单,则视图可能有点像这样: <form ng-submit="login()"> <input ng-model="user.email" type="email" name="email" id="email" ng-required />

我已经在Node.js中设置了后端代码,以便使用passport成功地通过GitHub验证。我能够使用jsonwebtoken生成令牌。但是,由于OAuth的流,我在管理前端方面遇到了困难

如果这是基于他们输入电子邮件和密码的表单,则视图可能有点像这样:

<form ng-submit="login()">
  <input ng-model="user.email" type="email" name="email" id="email" ng-required />
  <input ng-model="user.password" type="password" name="password" id="password" ng-required />
  <button type="submit">Log in</button>
</form>

登录
在此流程中,控制器可以使用
login()
向路由发出请求,并在成功时接收回包含
currentUser
和令牌的对象,并在回调时重定向

OAuth的流量给我带来了一些麻烦。在OAuth中,您将用户重定向到站点之外,然后它返回到node.js端的回调url,在服务器上设置了currentUser。我不知道如何将角度前端连接到这个过程


在angular中,您应该如何处理这个问题,以便单击“使用github登录”按钮将更新
$window.sessionStorage.token
变量和
$rootScope.currentUser
对象?

您的oauth链接的目标应该是
\u blank
,或者使用
窗口。打开
在新窗口中登录。。。oauth完成后,您可以从窗口的代码中调用
window.opener.foo(…)
,该代码可以通知前面的SPA应用程序更新其“状态…”

我想您应该从服务器站点登录并重定向到前端

创建一个api hit,它将进入服务器,它将填充github屏幕,您可以通过passport github for node.js使用该屏幕,然后登录完成后,它将为您提供数据。将服务器重定向到参数中包含github数据的网站页面

然后在加载页面时,通过URL解析读取这些参数

github登录