Vue.js,Express Server,Okta,通过隐式/回调部署到Heroku,404

时间:2018-08-07 01:12:04

标签: javascript express heroku vue.js okta

我有一个用vue-cli构建并通过Okta授权的Vue应用。推送到Heroku作为生产设置,但是我有点想知道Okta是否不会在免费增值级别进行生产?

我在文档中是否缺少有关此的信息...

设置:

var express = require('express'); var app = express(); var mongoose = require('mongoose'); mongoose.connect('mongodb://127.0.0.1:27017/exampleDB', { useNewUrlParser: true }); mongoose.Promise = global.Promise; var db = mongoose.connection; db.on('error', console.error.bind(console, 'MongoDB connection error:')); var someModel = mongoose.model('someModel', { name : String }); app.get('/api/todos', async function(req, res) { var awesome_instance = new someModel({ name: 'awesome' }); await awesome_instance.save() }); app.post('/api/todos', function(req, res) { }); app.listen(8080, ()=>console.log("App listening on port 8080")); 目录添加了通常的src附有Okta库的内容:

router/index.js

,这在路由数组中:

Vue.use(Auth, {
  issuer: 'dev_url',
  client_id: 'some_string',
  redirect_uri: window.location.origin + '/implicit/callback',
  scope: 'openid profile email'
})

{ path: '/implicit/callback', component: Auth.handleCallback() }, 中得到一个server.js,并进行了jwt验证并建立了文件夹:

src/

这些看起来都很不错,并且一切都像在localhost上一样起作用。使用webpack-dev-server,但将其推送到heroku时,我在app.use(express.static(path.join(__dirname, "../dist"))) ... const oktaJwtVerifier = new OktaJwtVerifier({ clientId: '<some_id>', issuer: '<some_url>' }) ... app.get('/', authRequired(), (req, res, next) => { return res.sendFile(path.join(__dirname, '../dist/index.html')) }) 路由上收到404 ...

以下是脚本:

implicit/callback

当构建完成并且所有的欢乐时光应该开始时,我单击登录,然后通过浏览器发出此调用,这似乎有点不可思议:

"scripts": { "dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js", "unit": "cross-env BABEL_ENV=test karma start test/unit/karma.conf.js --single-run", "test": "npm run unit", "lint": "eslint --ext .js,.vue src test/unit", "build": "node build/build.js", "server": "node ./src/server", "start": "node ./src/server", "heroku-prebuild": "npm install && npm run build" },

我们在404上崩溃了,没有身份验证。

如果克隆它并https://<base_url>.herokuapp.com/implicit/callback#id_token=<huge_hashed_string>&token_type=Bearer&expires_in=3600&scope=openid+email+profile&state=<huge_hashed_string>,则可以运行npm installnpm run dev

我尝试过的事情:

已经进行了大量的路线操作,不确定还有什么其他地方,主要是因为它可以在本地诚实运行,我认为我要么在设置Okta应用程序时遗漏了一些东西,要么在文档中遗漏了一些东西我这样办事。

我已将生产URL添加到仪表板设置中的登录重定向URI 中。和可接受的基本网址。有人对此有任何意见吗?

1 个答案:

答案 0 :(得分:0)

还不错。我发现的答案是,您必须返回令牌存储并使用OktaClient而不是其隐式回调设置。通过遵循This tutorial.

解决了该问题