分享

devstack用户登陆过程

eason 发表于 2015-7-22 20:28:05 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 2 20321
当我们请求http://127.0.0.1的时候,来到/opt/stack/horizon/openstack_dashboard的url.py,查看该访问那个方法,看到该文件中有如下内容
url(r'^$', 'openstack_dashboard.views.splash', name='splash'),
于是查看views.py的splash,
[mw_shl_code=actionscript3,true]def splash(request):
    if not request.user.is_authenticated():
        raise exceptions.NotAuthenticated()

    response = shortcuts.redirect(horizon.get_user_home(request.user))
    if 'logout_reason' in request.COOKIES:
        response.delete_cookie('logout_reason')
    return response[/mw_shl_code]

该方法首先确认请求是否有权限,然后调转到用户需要到的地方,比如admin用户来到http://127.0.0.1/admin.
由于我们没有登陆,肯定会有异常,这个异常被horizon的中间件处理,处理程序是/opt/stack/horizon/horizon/middleware.py,其中有三个方法,分别处理请求、响应、异常。
查看处理异常的代码
[mw_shl_code=actionscript3,true]response = redirect_to_login(next_url, login_url=login_url,
                                         redirect_field_name=field_name)
         [/mw_shl_code]

说明该方法将请求重定向到别的地方了,通过print,我们可以看到其中某些参数的内容
# next_url /
# login_url http://localhost/auth/login
# field_name next


说明请求被定向到http://localhost/auth/login,这和我们在网页上看到的url是一样的。
http://localhost/auth/login这个请求来到/usr/lib/python2.7/site-packages/openstack_auth的url.py中,login对应views.py的login方法,login方法中有如下代码
[mw_shl_code=actionscript3,true]res = django_auth_views.login(request,
                                  template_name=template_name,
                                  authentication_form=form,
                                  extra_context=extra_context,
                                  **kwargs)[/mw_shl_code]
该方法来自/usr/lib/python2.7/site-packages/django/contrib/auth/views.py的login方法,该方法有如下代码
[mw_shl_code=actionscript3,true]auth_login(request, form.get_user())

            return HttpResponseRedirect(redirect_to)[/mw_shl_code]

意思是登陆之后,定向到redirect_to,通过print,看到redirect_to的内容是/,这就需要我们在回到/opt/stack/horizon/openstack_dashboard的url.py中,还是views.py的splash方法,这时由于已经登陆,可以直接调转到用户需要显示的地方,比如http://localhost/auth/login。
这就是openstack的登陆过程,希望大家共同讨论


=======================================================
但是具体openstack查询数据库来验证用户密码是否正确的代码小弟还没找到,希望大牛能指点一二,小弟感激不尽

已有(2)人评论

跳转到指定楼层
nextuser 发表于 2015-7-22 23:13:12
楼主有没有博客,能否写一些关于openstack源码获取和开发环境搭建的文章。膜拜学习
回复

使用道具 举报

eason 发表于 2015-7-23 11:09:20
nextuser 发表于 2015-7-22 23:13
楼主有没有博客,能否写一些关于openstack源码获取和开发环境搭建的文章。膜拜学习

openstack源码获取和开发环境搭建的教程网上有,可以找找
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条