我在写web项目时,总是会为权限认证犯愁。
在采用前后端分离后,后端只提供接口,项目的路由不再归后端管,而是由代理服务器(Nginx)控制。
对于一般公开资源,URL的路由并不依赖于用户的状态,因此光靠代理服务器控制路由就够了。但是一旦涉及私密资源,事情就复杂起来了。
对私密资源的访问需要进行权限校验,而这个校验一般由后端提供接口进行。但后端又不负责路由,即此时就做不到直接将不同状态的用户路由到不同资源。
遇到这种状况时就需要 先调用后台接口后根据结果改变路由 。
显然,作为路由的发起者,不管是重定向还是动态载入资源,前端是能够做到这件事的。但前端代码的运行需要浏览器先加载相应的代码,因此仍存在一些弊端:
- 对私密资源的访问页面需要做成懒加载的单应用
- 当私密资源不包含前端代码(如图片,视频等)时无法避免直接访问
因此,我觉得更好的解决方法还是通过代理路由器去解决这个问题。
可能是我学艺不精,不知道光用Nginx如何去实现,因此,我个人的解决方案是扩展Nginx的功能:
通过Nginx将对所有对私密资源的请求路由至权限校验服务器,由其进行权限校验与转发。
原文地址:https://www.cnblogs.com/dragonboom/p/9307980.html
时间: 2024-10-17 02:38:37