我有一个快速服务器运行,以启用用户身份验证使用护照。我在运行快速URL时获取用户信息,但我无法使用axios从我的反应应用程序中获取用户对象。我的反应应用程序说网络错误。
我试着用
const cors = require("cors");
app.use(cors())
快速应用程序。js(以http://localhost:3000
)
var Strategy = new OpenIDConnectStrategy({
discoveryURL : discovery_url,
clientID : client_id,
clientSecret : client_secret,
callbackURL : callback_url,
skipUserProfile : true
},
function(iss, sub, profile, accessToken, refreshToken, params, done) {
process.nextTick(function() {
profile.accessToken = accessToken;
profile.refreshToken = refreshToken;
done(null, profile);
})
}
)
passport.serializeUser(function(user, done) {
done(null, user);
});
passport.deserializeUser(function(user, done) {
done(null, user);
});
passport.use(Strategy);
function ensureAuthenticated(req, res, next) {
if(!req.isAuthenticated()) {
req.session.originalUrl = req.originalUrl;
res.redirect('/login');
} else {
return next();
}
}
app.get('/user', ensureAuthenticated, function(req, res) {
res.json(req.user);
});
我的express应用程序在端口3000上运行,因此我可以在访问时看到用户对象http://localhost:3000/user
但是当我试图在我的反应应用程序中访问这个时,我收到了网络错误。
我的反应组件是
import React from 'react';
import axios from 'axios';
export default class UserInfo extends React.Component {
constructor() {
super()
this.state = {
userinfo: {}
}
}
componentDidMount() {
axios.get('http://localhost:3000/user')
.then(res => {
const userinfo = res.data;
this.setState({ userinfo });
}).catch(err => {
console.log("Fetch error", err)
})
}
render() {
console.log("User Info", userinfo);
return (
<React.Fragment>
Name: {this.state.userinfo.name}
</React.Fragment>
)
}
}
错误是
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource (Reason: CORS request did not succeed).
Fetch error Error: Network Error
更改axios后编辑
当我在mozilla开发者工具中查看响应并检查网络时。API没有给出任何响应,然后将axios更改为
axios('https://localhost:3000/hello', {
method: 'get',
withCredentials : true
})
然后开发工具中的newtwok给出了响应,react应用程序崩溃,说Uncaught(in promise)Error:networkerror
确保将cors
中间件放置在路由之前。
app.use(cors());
...
app.get('/user', ensureAuthenticated, function(req, res) {
res.json(req.user);
});
此外,react应用程序中使用的url使用的是https
scheme。
问题内容: 尝试进行某些路由需要身份验证。 我有这个: 注意:是的,身份验证服务可以正常工作。 对于每条路由,我都会检查用户是否已通过身份验证,如果没有通过身份验证,则要将他们重定向到登录页面,如果已通过身份验证,则它将以“ /”路由登陆到第一页。 我得到的是: 我在哪里做错了? 问题答案: 一个简单的解决方案是制作一个包含所有受保护路线的(高阶组件)。 根据您的应用程序的嵌套方式,您可能需要利用
试图使某些路由需要身份验证。 我有这个: 注意:是的,身份验证服务正常工作。 对于每个路由,我检查用户是否经过身份验证,如果没有,那么我想将他们重定向到登录页面,如果他们是,那么它将在第一个页面上着陆,路由为"/"。 我得到的只是: 我哪里做错了?
我正在尝试使用passport ldapauth npm验证openLDAP用户名和密码。在执行下面的代码时,我总是收到错误消息:“缺少凭据”。请帮助我我的代码有什么问题。 有关更多详细信息,请参阅此badRequestMessage flash消息以查找缺少的用户名/密码(默认值:“缺少凭据”)
问题内容: 我已经通过使用nodejs + express制作了简单的nodejs应用程序。现在,我要进行用户身份验证。我想通过使用猫鼬来实现会话处理。你能举个例子吗? 问题答案: 一些有用的链接: 如何在node.js中实现登录身份验证 在node.js和mongodb中创建注册和登录表单 另外,会话管理不是由Mongoose完成,而是由connect-mongodb或connect- redi
我是新的(护照)在laravel。是否有可能使用 即使使用了laravel内置身份验证?
我正在用java编写一个必须在我的工作环境中运行的程序。这是我的代码片段: 在我的家庭网络上,这工作得非常好,但在商业网络上,我会遇到以下错误: onnection.getSocketException:软件导致连接中止:recv在java.net.SocketInputSonquerer.runRead0(本机方法)在onquerer.java:44SocketInputStream.read(