我在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
对象?
答案 0 :(得分:2)
您的oauth链接的目标应为_blank
,或使用window.open
登录新窗口...当oauth完成时,您可以从窗口代码中调用window.opener.foo(...)
可以通知先前的SPA应用程序更新其“状态...
答案 1 :(得分:0)
我认为你想从服务器站点登录并重定向到前端。
创建一个api命中,它将转到服务器,它将填充github屏幕,你可以通过passport-github使用node.js,然后在登录完成后它将为你提供数据。使用参数中的github数据重定向到您的服务器到网站页面。
然后在页面加载时通过urlparsing读取这些参数