我想为google应用领域创建自定义登录页面。这是为了我所做的非盈利,所以他们在教育版上。
我查看了文档,似乎有一些解决方案但是我刚刚学习了python并且是编程Web服务的新手,我并不完全遵循文档中提到的所有内容。< / p>
查看Google应用的“用户Python API概述”Link to API,在您阅读“登录和注销”部分之前,它看起来像是我要查找的内容。它声明“如果用户未登录,该应用可以指示用户使用Google帐户登录或创建新的Google帐户”。我不会将用户重定向到默认的谷歌登录,然后再回来。我想要自定义登录页面来登录它们。
我如何完成此自定义登录页面?或者,如果可以的话,至少指出我正确的方向。
答案 0 :(得分:1)
不幸的是,这在谷歌本身,AFAIK中是不可能的。开放式身份验证的一个标志是您可以识别登录页面。
如果您想要自己实施,则必须使用google's SSO service并在后端执行验证。
不幸的是,这方面没有太多的单页。 PHP here和Rails都有很好的库。我将环顾四周,看看能否找到更简洁的例子。但是,您至少需要构建一个页面,为您的服务器上传一些证书并自己处理表示层。
答案 1 :(得分:1)
我只是添加了这个问题,因为它没有接受的答案,但仍然获得了相当多的观点。根据以上所述,用于获取Google凭据的自定义登录页面需要实现单点登录身份提供程序。这是通过&#39; Configuring permissions on Google Cloud Platform&#39;中提到的Google Apps前端完成的。
有关如何完成此操作的详细信息,请参阅文档&#39; Set up Single Sign-On (SSO) for Google Apps accounts&#39;和&#39; SAML Single Sign-On (SSO) Service for Google Apps&#39;。
答案 2 :(得分:0)
您可以使用twitter-bootstrap通过编写最小标记来获取现成的表单,而无需了解css / javascript。您现在需要的只是一些python代码,用于将表单数据与您的app-engine后端集成。
以下是我为正在进行的项目开发的示例。
编辑于12月7日:
根据评论的讨论,我在这里是我在GAE应用程序中处理用户身份验证的示例:
class Login(BaseHandler):
def get(self):
template = JINJA_ENVIRONMENT.get_template('login.html')
user=''
if self.session.has_key('user'):
user = self.session['user']
failure='n'
if self.request.environ['PATH_INFO']=='/failure':
failure='y'
values={'project': project,'summary':summary,'theme':self.session['theme'],'user':user,'fail':failure}
self.response.write( template.render(values) )
def post(self):
#TODO: validate user
if self.session.get('user'):
del self.session['user']
temail=self.request.get('loginuser').lower()
q=ndb.gql("select password from Will where email='" + temail + "'",ancestor=get_key())
#~ if not q:
#~ self.redirect('/failure')
#~ else:
result=q.fetch(1)
#self.response.write("select password from Will where email='" + temail + "'")
if len(result)>0:
if self.request.get('loginpassword') == result[0].password:
self.session['user'] = temail #loginpassword
self.redirect('/')
#logging.info('User %s just logged in' % sessions['user'])
else:
self.redirect('/failure') #incorrect password
else:
self.redirect('/failure') #username does not exist
在上面的代码中,BaseHandler类是我通过派生自默认的webapp2.RequestHandler类创建的一个便利类。请参阅我的article以确切了解如何使用此方法处理会话。
在Login类中,我所做的就是处理post()请求并验证电子邮件&amp;用户刚刚使用数据存储中的信息输入的密码。 get()方法只是将用户重定向到上面屏幕截图中的登录页面。您是否可以使用此类身份验证,或者您希望用户能够实际使用他的google / gmail凭据对您的网站进行身份验证?
答案 3 :(得分:-1)
启用SSO后,可以轻松自定义登录页面。一些现成的SSO可用,如gControl,管理员可以轻松自定义登录页面。组织也在内部构建SSO,并通过它们可以获得登录页面。