是否有提供固定用户身份验证支持的Go框架或程序包?

时间:2013-03-12 23:39:12

标签: authentication go

我已经被Python中可用的成熟框架(Django / Flask)所破坏,所以当我开始学习Go时,我不得不想知道在Go to django中是否存在任何类似的框架。 contrib.auth或Flask-Login?

主要用例是处理简单的用户身份验证,并能够扩展它以适应应用程序中的某些基于权限的路由。

2 个答案:

答案 0 :(得分:24)

据我所知,没有。您可以获得的最接近开箱即用的身份验证是通过Google AppEngine进行的,其中可以检索user的Google帐户,并且可以为应用administrators only确定某些路径。

在标准的Go网络服务器中,您通常需要滚动自己的身份验证,但这并不像听起来那么困难。许多框架将您与实际上非常重要的决策隔离开来;在典型的Go方式中,您需要根据应用程序的需求做出这些决定,然后选择适合您的现有库。

登录页面

只要您需要用户登录,您就可以使用HTML表单。这些通常使用html/template包呈现。要在提交表单时检索值,请使用request.FormValue

数据库

存储用户信息的方法有很多种;在os的文件系统上或在使用database/sql的SQL数据库中。一些NoSQL数据库也有成熟的驱动程序,包括MongoDBRedis

密码

要计算和比较哈希与密码,您需要使用预先存在的机制,这样您就不必自己重新创建它。为此,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.

https://github.com/martini-contrib/oauth2

相关问题