Lev*_*ell 15 authentication authorization clojure
我一直在Clojure的一个Web应用程序上作为一个辅助项目,我正在试图弄清楚如何进行用户身份验证和autherization.从谷歌搜索到的,我听说沙洲,但在阅读了沙洲上的两个博文(第1 部分,第2部分)后,我留下的问题多于答案.我已经查看了4clojure的源代码,从我所知道的,他们自己推出,问题是代码没有很好地评论,如果有的话.我想我需要推出自己的系统并使用sandbar或noir.session来传递用户信息.有人可以指点我正确的方向吗?我觉得我错过了一些简单的事情.
我看了4clojure登录代码,我认为实现的工作方式非常清楚.基本上它是传统的HTTP身份验证.将用户/密码以表格形式发布到URL,检查用户名和密码,并使用用户信息更新会话,该用户信息可用于进一步请求以检查此会话是否针对有效的登录用户.
这就是大多数Web应用程序身份验证的工作原理.现在这是"该怎么做"的一部分情况,对于"如何做",您可以使用Web框架提供的"原始"功能实现它自己,或者可能使用一些为您提供此功能的中间件以及提供一些钩子来定制实现一点.
对于身份验证,除了显而易见的"滚动你自己"之外,我发现如果你想使用OAUTH(例如通过Twitter),https://github.com/mattrepl/clj-oauth可以正常工作.一旦获得了用户信息,将其存储在某种会话对象中(通过环中间件会话或类似的抽象)似乎是显而易见的事情.
对于授权,您链接到的博客文章中描述的方式 - 使用授权中间件(或您首选的Web堆栈提供的任何抽象 - 例如pre-route在Noir中)包装某些路由,效果很好.