【发布时间】:2018-04-09 10:15:11
【问题描述】:
我的 Web 应用具有三个访问级别的 URL:
- 任何人都可以访问的内容(登录页面和静态资产)
- 那些可访问的普通用户和登录的管理员
- 只有登录的管理员才能访问
我应该为我的路由器中的每个 URL 模式指定最低访问级别,以便阻止低于该级别的人。 (我想他们应该得到 HTTP 错误 401 或 403。)
如何最好地实施这些检查,这样我就不必记住将它们分别放在每个 URL 处理函数中(这很容易忘记)?理想情况下,我想做这样的事情:
router.Get("/someRegularPage", regularAccess(handleSomeRegularPage))
router.Get("/someAdminPage", adminAccess(handleSomeAdminPage))
router.Get("/", publicAccess(handleLoginPage))
是否有一些半标准的中间件可以做到这一点,它是如何工作的?自己写有多难?
此外,如果默认权限是拒绝所有人访问,以防我忘记为某些 URL 指定访问级别,那将是非常棒的。编译器警告或错误将是理想的。
【问题讨论】:
-
编写测试以确保您没有忘记。作为奖励,您知道您的中间件确实有效。
标签: go web permissions middleware