我正在为一家使用 Google Apps 登录的公司开发 Intranet django 项目(不使用 GAE)。所以我希望我的用户能够使用他们的谷歌帐户登录来登录我的 django 项目。 OpenID 似乎很合适,虽然也许 Oauth 也可以工作?
我看到很多类似名称的库将 django 的身份验证系统连接到外部登录系统:
以下是我想要对集成执行的操作:让用户使用他们的 google 帐户登录,而不是使用原生 django 系统。为管理系统之类的东西保留 django 的权限模型。所以我认为这意味着我们在第一次登录之前没有见过的新帐户时会在 django 中自动创建一个新的用户记录。
任何有使用这些项目经验的人都可以告诉我哪个最有效吗?或者只是建议您尝试过哪些最活跃/最实用?谢谢!
最佳答案
我终于得到了这个工作,所以我会回答我自己的问题,因为这里以前的答案很有帮助,但不能说明整个故事。
django-openid-auth实际上很容易设置和使用。 README 文件非常清楚。如果您只想使用标准的 google 帐户(即@gmail.com 地址),那么您可以在 settings.py 中配置它:
OPENID_SSO_SERVER_URL = 'https://www.google.com/accounts/o8/id'
但是,如果您想使用“谷歌应用程序”帐户,即在您自己公司的域中托管 gmail,那就更复杂了。我的详细信息来自 this question .要使用您的 Google Apps 帐户,请将您的 settings.py 配置为:
OPENID_SSO_SERVER_URL = 'https://www.google.com/accounts/o8/site-xrds?hd=example.com'
# replace example.com with your hosted google apps domain
将来这可能会起作用,但今天可能不会。问题出在 django-openid-auth 所依赖的 python-openid 中。 python-openid 的标准构建不理解谷歌正在使用的一些协议(protocol)扩展。 (为什么 google 需要扩展协议(protocol)?挖掘 http://groups.google.com/group/google-federated-login-api/web/openid-discovery-for-hosted-domains 并报告回来。祝你好运。)因此,您需要改用 adieu 的 python-openid 补丁,该补丁可在此处获得: http://github.com/adieu/python-openid
在您现有的 python-openid 上安装它。现在它应该可以工作了。
小心 OPENID_USE_AS_ADMIN_LOGIN 设置,因为它要求您有一个 openid 用户帐户,即“员工”或“ super 用户”才能使用管理员,这不会发生默认。所以你需要做一个启用openid的两步过程,使用你的openid登录在django中创建一个帐户,然后使用你的旧管理员帐户将你自己的openid帐户标记为 super 用户,然后禁用非openid管理员访问。
还有一件事:您的域管理员可能需要为您的域启用 openid 登录,然后才能使用。控制在http://www.google.com/a/cpanel/example.com/SetupIdp
关于python - 哪个 openid/oauth 库可以将 django 项目连接到 Google Apps 帐户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3145453/
类classAprivatedeffooputs:fooendpublicdefbarputs:barendprivatedefzimputs:zimendprotecteddefdibputs:dibendendA的实例a=A.new测试a.foorescueputs:faila.barrescueputs:faila.zimrescueputs:faila.dibrescueputs:faila.gazrescueputs:fail测试输出failbarfailfailfail.发送测试[:foo,:bar,:zim,:dib,:gaz].each{|m|a.send(m)resc
关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。
我在使用omniauth/openid时遇到了一些麻烦。在尝试进行身份验证时,我在日志中发现了这一点:OpenID::FetchingError:Errorfetchinghttps://www.google.com/accounts/o8/.well-known/host-meta?hd=profiles.google.com%2Fmy_username:undefinedmethod`io'fornil:NilClass重要的是undefinedmethodio'fornil:NilClass来自openid/fetchers.rb,在下面的代码片段中:moduleNetclass
如何在buildr项目中使用Ruby?我在很多不同的项目中使用过Ruby、JRuby、Java和Clojure。我目前正在使用我的标准Ruby开发一个模拟应用程序,我想尝试使用Clojure后端(我确实喜欢功能代码)以及JRubygui和测试套件。我还可以看到在未来的不同项目中使用Scala作为后端。我想我要为我的项目尝试一下buildr(http://buildr.apache.org/),但我注意到buildr似乎没有设置为在项目中使用JRuby代码本身!这看起来有点傻,因为该工具旨在统一通用的JVM语言并且是在ruby中构建的。除了将输出的jar包含在一个独特的、仅限ruby
使用带有Rails插件的vim,您可以创建一个迁移文件,然后一次性打开该文件吗?textmate也可以这样吗? 最佳答案 你可以使用rails.vim然后做类似的事情::Rgeneratemigratonadd_foo_to_bar插件将打开迁移生成的文件,这正是您想要的。我不能代表textmate。 关于ruby-使用VimRails,您可以创建一个新的迁移文件并一次性打开它吗?,我们在StackOverflow上找到一个类似的问题: https://sta
查看Ruby的CSV库的文档,我非常确定这是可能且简单的。我只需要使用Ruby删除CSV文件的前三列,但我没有成功运行它。 最佳答案 csv_table=CSV.read(file_path_in,:headers=>true)csv_table.delete("header_name")csv_table.to_csv#=>ThenewCSVinstringformat检查CSV::Table文档:http://ruby-doc.org/stdlib-1.9.2/libdoc/csv/rdoc/CSV/Table.html
我正在使用Sequel构建一个愿望list系统。我有一个wishlists和itemstable和一个items_wishlists连接表(该名称是续集选择的名称)。items_wishlists表还有一个用于facebookid的额外列(因此我可以存储opengraph操作),这是一个NOTNULL列。我还有Wishlist和Item具有续集many_to_many关联的模型已建立。Wishlist类也有:selectmany_to_many关联的选项设置为select:[:items.*,:items_wishlists__facebook_action_id].有没有一种方法可以
我发现ActiveRecord::Base.transaction在复杂方法中非常有效。我想知道是否可以在如下事务中从AWSS3上传/删除文件:S3Object.transactiondo#writeintofiles#raiseanexceptionend引发异常后,每个操作都应在S3上回滚。S3Object这可能吗?? 最佳答案 虽然S3API具有批量删除功能,但它不支持事务,因为每个删除操作都可以独立于其他操作成功/失败。该API不提供任何批量上传功能(通过PUT或POST),因此每个上传操作都是通过一个独立的API调用完成的
我在我的Rails项目中使用Pow和powifygem。现在我尝试升级我的ruby版本(从1.9.3到2.0.0,我使用RVM)当我切换ruby版本、安装所有gem依赖项时,我通过运行railss并访问localhost:3000确保该应用程序正常运行以前,我通过使用pow访问http://my_app.dev来浏览我的应用程序。升级后,由于错误Bundler::RubyVersionMismatch:YourRubyversionis1.9.3,butyourGemfilespecified2.0.0,此url不起作用我尝试过的:重新创建pow应用程序重启pow服务器更新战俘
我已经像这样安装了一个新的Rails项目:$railsnewsite它执行并到达:bundleinstall但是当它似乎尝试安装依赖项时我得到了这个错误Gem::Ext::BuildError:ERROR:Failedtobuildgemnativeextension./System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/rubyextconf.rbcheckingforlibkern/OSAtomic.h...yescreatingMakefilemake"DESTDIR="cleanmake"DESTDIR="