我已经被Python中可用的成熟框架(Django / Flask)所破坏,所以当我开始学习Go时,我不得不想知道在Go to django中是否存在任何类似的框架。 contrib.auth或Flask-Login?
主要用例是处理简单的用户身份验证,并能够扩展它以适应应用程序中的某些基于权限的路由。
答案 0 :(得分:24)
据我所知,没有。您可以获得的最接近开箱即用的身份验证是通过Google AppEngine进行的,其中可以检索user的Google帐户,并且可以为应用administrators only确定某些路径。
在标准的Go网络服务器中,您通常需要滚动自己的身份验证,但这并不像听起来那么困难。许多框架将您与实际上非常重要的决策隔离开来;在典型的Go方式中,您需要根据应用程序的需求做出这些决定,然后选择适合您的现有库。
只要您需要用户登录,您就可以使用HTML表单。这些通常使用html/template包呈现。要在提交表单时检索值,请使用request.FormValue。
存储用户信息的方法有很多种;在os的文件系统上或在使用database/sql的SQL数据库中。一些NoSQL数据库也有成熟的驱动程序,包括MongoDB和Redis。
要计算和比较哈希与密码,您需要使用预先存在的机制,这样您就不必自己重新创建它。为此,go.crypto子存储库提供了bcrypt包。
如果要存储会话数据,可以使用gorilla/sessions之类的解决方案。根据您的安全需求,您可以将会话数据直接存储在(可选的secured)cookie中,也可以将其存储在后端,并在cookie中存储会话ID。
答案 1 :(得分:2)
来自READ.me
Allows your Martini application to support user login via an OAuth 2.0 backend.