我希望能够在没有有效登录时将我的MEAN应用程序重定向到“登录”页面。
我有一个组件,ngOninit()
调用API路由。
API路线如下:
router.get("/route", isLoggedIn, (req, res) => {
});
isLoggedIn
的位置:
function isLoggedIn(req, res, next) {
if (req.isAuthenticated()) {
return next();
} else {
console.log("Not Logged in");
res.redirect("http://localhost:3000/login");
}
}
执行res.redirect("http://localhost:3000/login")
时,它会在控制台中抛出错误:“模板解析错误”。我想这与调用API等待API响应的组件有关。
实现这一目标的最佳方法是什么?
答案 0 :(得分:1)
在MEAN应用程序中处理它,将用户从angular重定向到登录页面,并从API返回JSON响应。
res.status(401).json({error: "Unauthorized Access"});
在您的角度方面,在此API调用的响应中检查您是否收到此错误,然后将用户重定向到登录页面。你可以通过使用角度服务来做到这一点。 $location
$location.url('/login');
对于检查每条路线上的身份验证的通用解决方案,您应该使用http interceptor
。请查看以下stackoverflow问题:
答案 1 :(得分:0)
如果你使用角度,那么你需要设法在有角度的一侧进行路线。您可以发送某种HTTP代码或响应,告诉您的角度应用程序请求未经授权。
您可以编写将请求发送到节点服务器并检查错误的常规包装器。您可以根据您正在使用的逻辑和库编写常规函数,但这可能是这样的。
function makeRequest(url,..., callback) {
request(...).then(response => {
if(resp.status === 401) $location.url('/login');
else callback(resp.data)
})
}