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

时间:2015-01-28 23:09:14

标签: javascript angularjs node.js authentication oauth

我在Node.js中设置了后端代码,使用护照成功通过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在服务器上设置。我不知道如何将角度前端连接到这个过程。

在角度方面,您应该如何处理此问题,以便点击&#34;使用github登录&#34;按钮会更新$window.sessionStorage.token变量和$rootScope.currentUser对象?

2 个答案:

答案 0 :(得分:2)

您的oauth链接的目标应为_blank,或使用window.open登录新窗口...当oauth完成时,您可以从窗口代码中调用window.opener.foo(...)可以通知先前的SPA应用程序更新其“状态...

答案 1 :(得分:0)

我认为你想从服务器站点登录并重定向到前端。

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

然后在页面加载时通过urlparsing读取这些参数