博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
BBS论坛(十)
阅读量:6850 次
发布时间:2019-06-26

本文共 4261 字,大约阅读时间需要 14 分钟。

10.1.客户端权限验证功能完成

(1)cms/cms_profile

显示当前用户的角色和权限

                角色:                                    {% for role in user.roles %}                        {
{ role.name }} {% if not loop.last %},{% endif %} {% endfor %} 权限: {% for role in user.roles %} {
{ role.desc }} {% if not loop.last %}/{% endif %} {% endfor %}

 (2)cms/hooks.py

@bp.context_processordef cms_context_pocessor():    return {
'CMSPermission':CMSPermission}

 (3)cms/cms_base.html

不同的角色,显示不同的内容

{% set cms_user = g.cms_user %}                {% if cms_user.has_permission(CMSPermission.POSTER) %}                    
  • 帖子管理
  • {% endif %} {% if cms_user.has_permission(CMSPermission.COMMENTER) %}
  • 评论管理
  • {% endif %} {% if cms_user.has_permission(CMSPermission.BOARDER) %}
  • 板块管理
  • {% endif %} {% if cms_user.has_permission(CMSPermission.FRONTUSER) %} {% endif %} {% if cms_user.has_permission(CMSPermission.CMSUSER) %} {% endif %} {% if cms_user.is_developer %}
  • CMS组管理
  • {% endif %}

    (4)添加用户和角色

    #添加访问者python manage.py create_cms_user -u 我是访问者 -p 123456 -e 11111@qq.compython manage.py add_user_to_role -e 11111@qq.com -n 访问者#添加运营者python manage.py create_cms_user -u 我是运营者 -p 123456 -e 22222@qq.compython manage.py add_user_to_role -e 22222@qq.com -n 运营#添加管理员python manage.py create_cms_user -u 我是管理员 -p 123456 -e 33333@qq.compython manage.py add_user_to_role -e 33333@qq.com -n 管理员

    不同的用户登录到后台cms显示不同的内容

     开发者

     

    访问者

     

    10.2.服务端权限验证功能完成

     (1)后台剩余的html页面

    cms_posts.html

    {% extends 'cms/cms_base.html' %}{% block title %}    帖子管理{% endblock %}{% block head %}    {% endblock %}{% block page_title %}    {
    { self.title() }}{% endblock %}{% block main_content %} 帖子管理页面{% endblock %}

    其它几个一样

    cms_comments.htmlcms_boards.htmlcms_fusers.htmlcms_cusers.htmlcms_croles.html

    (2)cms/decorators.py

    添加一个权限验证的装饰器

    def permission_required(permission):    def outter(func):        @wraps(func)        def inner(*args,**kwargs):            user = g.cms_user            if user.has_permission(permission):                return func(*args,**kwargs)            else:                return redirect(url_for('cms.index'))        return inner    return outter

    (3)cms/views.py

    @bp.route('/posts/')@login_required@permission_required(CMSPermission.POSTER)def posts():    return render_template('cms/cms_posts.html')@bp.route('/comments/')@login_required@permission_required(CMSPermission.COMMENTER)def comments():    return render_template('cms/cms_comments.html')@bp.route('/boards/')@login_required@permission_required(CMSPermission.BOARDER)def boards():    return render_template('cms/cms_boards.html')@bp.route('/fusers/')@login_required@permission_required(CMSPermission.FRONTUSER)def fusers():    return render_template('cms/cms_fusers.html')@bp.route('/cusers/')@login_required@permission_required(CMSPermission.CMSUSER)def cusers():    return render_template('cms/cms_cusers.html')@bp.route('/croles/')@login_required@permission_required(CMSPermission.ALL_PERMISSION)def croles():    return render_template('cms/cms_croles.html')

    (4)cms/cms_base.html

    修改url链接

    {% set cms_user = g.cms_user %}                {% if cms_user.has_permission(CMSPermission.POSTER) %}                    
  • 帖子管理
  • {% endif %} {% if cms_user.has_permission(CMSPermission.COMMENTER) %}
  • 评论管理
  • {% endif %} {% if cms_user.has_permission(CMSPermission.BOARDER) %}
  • 板块管理
  • {% endif %} {% if cms_user.has_permission(CMSPermission.FRONTUSER) %} {% endif %} {% if cms_user.has_permission(CMSPermission.CMSUSER) %} {% endif %} {% if cms_user.is_developer %}
  • CMS组管理
  • {% endif %}

     

    转载地址:http://uwlul.baihongyu.com/

    你可能感兴趣的文章
    CSS自定义文件上传按钮
    查看>>
    排序算法概览(二)
    查看>>
    document对象获取例子
    查看>>
    java模拟http的get和post请求
    查看>>
    实验2
    查看>>
    Realm Update failed - Android
    查看>>
    beta冲刺(6/7)
    查看>>
    kubectl error: The connection to the server localhost:8080 was refused
    查看>>
    [POI2012]Squarks
    查看>>
    Code Signal_练习题_All Longest Strings
    查看>>
    (转)Redis
    查看>>
    ARTS打卡计划第三周-Review
    查看>>
    delphi 知道excel选中的单元格的行号
    查看>>
    Vue.js中data,props和computed数据
    查看>>
    软件不能用Surface Pro触控笔 微软这有解决办法
    查看>>
    android开发(19) 调用手机的摄像头录像,并播放。
    查看>>
    SeekBar 事件响应和 自定义滑块图形
    查看>>
    Delphi XE5开发Android程序使用自定义字体文件.
    查看>>
    Python之while循环
    查看>>
    sqlserver的排序
    查看>>