博客
关于我
强烈建议你试试无所不能的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/

    你可能感兴趣的文章
    wpa_cli 连接 wifi
    查看>>
    82. NotesclientPrint相同的信息,以状态栏的问题
    查看>>
    没有注册类 (异常来自 HRESULT:0x80040154 (REGDB_E_CLASSNOTREG))
    查看>>
    网络爬虫+HtmlAgilityPack+windows服务从博客园爬取20万博文
    查看>>
    acdream 1431 Sum vs Product
    查看>>
    2015/08/15心情
    查看>>
    hdu1796 How many integers can you find
    查看>>
    Synchronized之二:synchronized的实现原理
    查看>>
    项目属性-->生成事件-->后期生成事件命令行
    查看>>
    [dp] hdu 4472 Count
    查看>>
    Fork/Join框架
    查看>>
    from会存在潜在的陷阱
    查看>>
    二叉搜索树(Binary Search Tree)--C语言描述(转)
    查看>>
    单线程02
    查看>>
    删除我的电脑中360随身WiFi云U盘的图标
    查看>>
    EntityFramework 7 Migrations 迁移命令
    查看>>
    SCM文章9类:外部中断示例程序
    查看>>
    thread.join() 方法存在的必要性是什么?
    查看>>
    关于audio标签播放跨域的问题
    查看>>
    用WPF窗体打造个性化界面的图片浏览器
    查看>>