花了些时间初步了解了nodejs 和express 的运作方式.这几天准备做一个小的项目,在考虑到权限问题的时候却被卡住了.
我的需求是这样的. 单纯的用户认证这个应该很简单,passport这些都能胜任.. 但是我想做的是针对每个请求URL进行权限控制.比如针对普通用户,
普通用户可以访问/user/updateSelf ,不能访问/user/addUser,而作为管理员可以访问任何一个链接. 这是第一方面
另外一方面,因为express也支持 restful的请求, 类似/user/:userId, /user/:action/:data ,如果采用这样的写法, 那么后台实际定义的URL是上面写的这样, 而接收过来的请求
URL 可能是 /user/12 , /user/save/u3 , 针对这样的URL 我又该怎么进行权限的控制呢.
我打算将所有定义的URL都和数据中的角色表进行映射, 比如 admin 对应 [/user/:userId,/user/:action/:data] 而普通用户角色 user对应 [/user/:userId]
那么 对于这样的路由 app.get('/user/:action/:data',function(res,req,next){.....}) user就不会有权限访问.
但是我又该如何在处理请求之前获取 这些实际的url 诸如 /user/1 对应的是 /user/:userId 这个Url呢?
java中有反射,并且像struts这样的框架提供了拦截器,在执行action之前可以反射获取待执行的action,然后在判断URL和角色有无权限. 在nodejs中有这样的办法吗?
有人有好的办法吗 或者 有没有其他的权限控制框架. 让我不用为每个路由去配置权限. 而只要通过aop的方式,在执行所有的路由方法之前 判断权限?