Clojure/Friend 中的基本 http 身份验证
basic http auth in Clojure/Friend
我正在尝试使用 friend.
在 Clojure 中为 API 进行基本验证
这是登录请求:
curl -X POST -H "Content-Type: application/x-www-form-urlencoded" -d 'user=myuser%40email.com&pass=super-secret-password' http://localhost:3000/login/
我也在使用 compojure,但我不确定如何重用链接的示例。以下是我不知道如何更改的部分:
如何将 username/password 字段替换为我的 curl 请求中的 user/pass 字段?我可以从原始请求中提取它们,但我不知道如何将其传递给朋友(我需要更改 credential-fn
吗?)。
用数据库中的数据替换user atom。我有一个 auth [email password]
returns true 或 false(从数据库中获取并使用 bcrypt)。我还可以从数据库中获取用户角色。我如何使用数据库(特别是我使用 mongo/monger)而不是用户原子?
您可以提供完全不同的 credential-fn,或者坚持使用 credential-fn 实现的演示=]cemerick.friend.credentials/bcrypt-credential-fn.阅读 bcrypt-credential-fn 的文档 https://github.com/cemerick/friend/blob/master/src/cemerick/friend/credentials.clj,它很长。它需要一个 load-credentials-fn 加载给定用户名字符串的用户,然后检查密码是否匹配。在演示中,load-credentials-fn 是用户原子中的一个映射,但是如果您有一个数据库,您可能希望提供一个不同的 load-credentials-fn 函数来查找数据库,您不想在原子映射中加载用户 table。
我正在尝试使用 friend.
在 Clojure 中为 API 进行基本验证这是登录请求:
curl -X POST -H "Content-Type: application/x-www-form-urlencoded" -d 'user=myuser%40email.com&pass=super-secret-password' http://localhost:3000/login/
我也在使用 compojure,但我不确定如何重用链接的示例。以下是我不知道如何更改的部分:
如何将 username/password 字段替换为我的 curl 请求中的 user/pass 字段?我可以从原始请求中提取它们,但我不知道如何将其传递给朋友(我需要更改
credential-fn
吗?)。用数据库中的数据替换user atom。我有一个
auth [email password]
returns true 或 false(从数据库中获取并使用 bcrypt)。我还可以从数据库中获取用户角色。我如何使用数据库(特别是我使用 mongo/monger)而不是用户原子?
您可以提供完全不同的 credential-fn,或者坚持使用 credential-fn 实现的演示=]cemerick.friend.credentials/bcrypt-credential-fn.阅读 bcrypt-credential-fn 的文档 https://github.com/cemerick/friend/blob/master/src/cemerick/friend/credentials.clj,它很长。它需要一个 load-credentials-fn 加载给定用户名字符串的用户,然后检查密码是否匹配。在演示中,load-credentials-fn 是用户原子中的一个映射,但是如果您有一个数据库,您可能希望提供一个不同的 load-credentials-fn 函数来查找数据库,您不想在原子映射中加载用户 table。