使用Angular.js处理基于OAuth令牌的authentication?

我已经在Node.js中设置了我的后端代码,使用护照成功validationGitHub。 我能够使用jsonwebtoken生成一个标记。 但是,由于OAuth的stream动,我无法pipe理前端。

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

<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> 

在此stream程中,控制器可以使用login()向路由发出请求,并在成功时接收包含currentUser和令牌的对象,并在callback中redirect。

OAuth的stream程在这里造成了一些麻烦。 在OAuth中,您将用户redirect到站点之外,并返回到服务器上设置currentUser的node.js端的callbackURL。 我不知道如何将angular度前端连接到这个过程。

在angular度,你应该如何处理这个,点击一个“Githublogin”button将更新$window.sessionStorage.tokenvariables和$rootScope.currentUser对象?

你的oauth链接应该有一个_blank的目标,或者使用window.openlogin一个新的窗口…当oauth完成时,你可以调用window.opener.foo(...)从你的窗口的代码,可以通知前SPA应用程序更新其“状态…

我想你想从服务器站点login并redirect到前端。

创build一个api命中将会去服务器,它会填充github屏幕,您可以使用passport-github为node.js,然后当login完成后,它会给你的数据。 redirect到您的服务器到网页页面中的github数据。

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