2016-02-01 85 views
1

我是Angular的新手,我试图包裹头部的一件事是路由授权。我来自.NET/IIS世界,其中路由授权与使用[Authorize]属性装饰您的API或MVC控制器一样简单。角度路由授权安全

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

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

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

谢谢。

回答

1

很明显,纯粹的客户端解决方案不能存在。因此,只有在必须安全限制某条路线的情况下,才能使用角度路由。我认为路由必须在两端进行处理。

我使用节点所以这里是我做过什么:

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

这工作,但我不知道这是最好的办法。你怎么看?这是处理路由的正确方法吗?

谢谢。