django_openstack_auth源码分析与集成

前言

最近做一个比较简单的WEB应用,展示一些openstack简单的内容,认证总是要集成的,看了下django_openstack_auth组件,它本身是可以作为django应用的认证后端的,于是打算把它集成进来。

集成

翻了官方文档,首先做一些配置
安装比较简单:

Run pip install django_openstack_auth.

Add openstack_auth to settings.INSTALLED_APPS.

Add ‘openstack_auth.backend.KeystoneBackend’ to your settings.AUTHENTICATION_BACKENDS, e.g.:

AUTHENTICATION_BACKENDS = (‘openstack_auth.backend.KeystoneBackend’,)
Configure your API endpoint(s) in settings.py:

OPENSTACK_KEYSTONE_URL = “http://example.com:5000/v3
Include ‘openstack_auth.urls’ somewhere in your urls.py file.

Use it as you would any other Django auth backend.
这个步骤很简单,主要是页面应该如何集成进去呢?
看openstack_auth源码
urls.py

 url(r"^login/$", "login", name='login'),
 url(r"^logout/$", 'logout', name='logout'),

可以看到有URL地址,进去views.py看login方法,
大致流程如下:

Created with Raphaël 2.1.0 开始 POST且SSO? 处理SSO登录 结束 取regions 组form 组template(auth/login.html) 调用login(X) 存session yes no

可见要自行准备auth/login.html模板,于是写了个模板,但是里面FORM怎么写呢,一开始自己写了FORM,写了username等属性,按照post到auth/login去登录,一直失败。
仔细思考,感觉这样流程也是不对的,跟form根本没关联,流程有问题。于是看了TEST中的例子,恍然大悟
在login.html里写如下FORM即可

<form method="post" action="/auth/login/">
            {% csrf_token %}
            {{ form.as_p }}
<button class="btn" type="submit">登录</button>
<input type="hidden" name="next" value="{{ next }}" />

之后发现果然可以登录了~~

登录检验

对于未登录的调用,应跳转到登录界面去,如下去做

@login_required(login_url="/auth/login/")

在函数名称上都加上这个即可,如果没有登录,则会自动跳转。

setting里还加了

if not WEBROOT.endswith('/'):
WEBROOT += '/'
if LOGIN_URL is None:
LOGIN_URL = WEBROOT + 'auth/login/'
if LOGOUT_URL is None:
LOGOUT_URL = WEBROOT + 'auth/logout/'
if LOGIN_REDIRECT_URL is None:
LOGIN_REDIRECT_URL = WEBROOT

至此,登录问题基本搞定~

参考

http://docs.openstack.org/developer/django_openstack_auth/installation.html#installation

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

day walker

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值