权限管理如何放到MVC架构中

对于一个应用系统的权限机制,我本来想放到Control这一层来。但是有一些不明白的地方。由于MVC模式中,View可以直接向Model来访问数据,Control直接向Model来调用一些更新数据的功能。那么对于权限中的“可执行/不可执行”这样的要求直接放在Control这层就可以控制用户对业务逻辑的是否执行的权限。但如果管理到数据行权限,也就是不同用户可以查询到的数据不同,(如:不同业务员只能看到自己的订单),那么由于View可以直接从Model获取数据,那么权限的代码相应也要写到View里面。我个人觉得这样的代码总是不太理想,如果将权限代码放到Model里,显示管控太细了,我不希望权限和Model紧密耦合,最好只写在Control里。

权限其实是应该包裹在业务层外部,从位置讲,就介于表现层和业务层之间了,可见JiveJdon3的源码展示,其中jivejdon_permission.xml是使用拦截器实现的,包裹在业务层外部的权限管理。