角度路由授权安全性

时间:2016-02-01 03:44:49

标签: angularjs routing

我是Angular的新手,我试图解决的一个问题是路线授权。我来自.NET / IIS世界,其中路由授权就像使用[Authorize]属性装饰API或MVC控制器一样简单。

我已经阅读了几篇关于Angular如何处理路由的帖子和文档。我担心的是授权发生在客户端。是什么阻止用户启动开发工具,断开脚本执行,以及更改授权服务中控制用户是否有权访问此路由的变量?

正如我所提到的,我是Angular的新手,所以也许我误解了路由是如何工作的。如果是这种情况,请纠正我。

所以,我的问题是:如果使用Angular路由,如何使用服务器端路由授权实现相同级别的安全性?

谢谢。

1 个答案:

答案 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');
});




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

谢谢。