我和那些家伙成功地构建了一个堆栈。它是一个与Oracle数据库交互的表单。
现在我正在添加身份验证,要求使用nodejs的"client-OAuth2"模块将其添加到OAuth2服务器。这是Node.js:中的代码
requireLogin = function (req, res, next) {
var uri=ServAuth.code.getUri();
res.redirect(uri);
};
app.get('/auth/callback', function (req, res) {
ServAuth.code.getToken(req.url)
.then(function (user) {
console.log(user); //=> { accessToken: '...', tokenType: 'bearer', ... }
user.request({
method: 'get',
url: 'https://aut.server.blabla.bla/api/Me'
}).then(function (res) {
res.body.forEach(function (item){
if (item.Type=="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name") {
logged_user=item.Value;
}
});
})
return res.sendFile(path.resolve(__dirname + '/../public/form.html')); // load the single view file (angular will handle the page changes on the front-end)
});
});
app.use('/form', requireLogin);
如果我调用"myserver.bla/form",我会被正确地重定向到OAuth2服务器的登录页面;然后我登录并授予访问权限。然后加载页面"form.html",但我在浏览器控制台中看到错误:
错误:[$injector:modulerr]无法实例化模块NSW_PCB_QC,原因是:[$injector:nomod]模块'NSW_PCB_QC'不可用!
请注意,NSW_PCB_QC是角度应用程序的名称(ng app="NSW_PCB _QC")。
但是,如果我绕过身份验证,直接加载form.html,调用"myserver.bla/form.html",那么所有角度模块都会正确加载。
问题出在哪里?
提前感谢
问题是js脚本中的相对路径指向不同的位置,这取决于文件的服务方式。修复方法是通过在路径前面添加一个/
来从同一位置根除路径,使其看起来像
<script src="js/services/services.js"></script>
应该看起来像
<script src="/js/services/services.js"></script>