我是Angular的新手,我试图解决的一个问题是路线授权。我来自.NET / IIS世界,其中路由授权就像使用[Authorize]属性装饰API或MVC控制器一样简单。
我已经阅读了几篇关于Angular如何处理路由的帖子和文档。我担心的是授权发生在客户端。是什么阻止用户启动开发工具,断开脚本执行,以及更改授权服务中控制用户是否有权访问此路由的变量?
正如我所提到的,我是Angular的新手,所以也许我误解了路由是如何工作的。如果是这种情况,请纠正我。
所以,我的问题是:如果使用Angular路由,如何使用服务器端路由授权实现相同级别的安全性?
谢谢。
答案 0 :(得分:2)
很明显,纯客户端解决方案不可能存在。因此,在必须安全地限制某个路线的情况下,不能使用角度路由。我认为必须在两端处理路由。
我正在使用Node,所以这就是我所做的:
//first evaluate the restricted route
app.get('/admin/*', function(req, res) {
//authorization
var authenticated = call_to_auth_service();
if (!authenticated) {
res.status(403);
res.end();
}
else {
//just remove the front /
var url = req.url.replace('/admin/', 'admin/');
res.render(url);
}
});
//open access - everything else goes back to the index page and there the angular routing takes over
app.get('*', function(req, res){
res.render('index');
});

这有效,但我不确定这是否是最佳方法。你怎么看?这是处理路由的正确方法吗?
谢谢。