Python 学习 第十篇 CMDB用户权限管理
2016-10-10 16:29:17
不管是什么系统,用户权限都是至关重要的。所以我在注册用户的时候,就为他们分了两种权限。一种是普通用户的权限,一种是管理员权限。普通用户在数据库中的value是user,管理员的value是admin。
因为我想设计的系统是只有一位管理员的。所以这里我没有根据角色来进行判断。而是根据他的用户名来判断。管理员的用户名是唯一的,那就是admin。
闲话少说,先把注册用户的代码贴上来
逻辑端:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
@app .route( "/adduser" ,methods = [ 'GET' , 'POST' ]) def adduser(): if request.method = = "GET" : username = session.get( "name" ) return render_template( "register.html" ,username = username) #前端post请求,逻辑端通过request.form获取整个表单的值 if request.method = = "POST" : userlist = dict ((k,v[ 0 ]) for k,v in dict (request.form).items()) userlist[ 'password' ] = hashlib.md5(userlist[ 'password' ] + salt).hexdigest() userlist[ 're_password' ] = hashlib.md5(userlist[ 're_password' ] + salt).hexdigest() if userlist[ "name" ] in [ n.values()[ 0 ] for n in get_userlist([ "name" ]) ]: errmsg = "username is exist" return json.dumps({ 'code' : '1' , 'errmsg' :errmsg}) if not userlist[ "name" ] or not userlist[ "password" ]: errmsg = "username and password is not empty" return json.dumps({ 'code' : '1' , 'errmsg' :errmsg}) if userlist[ "password" ] ! = userlist[ "re_password" ]: errmsg = "password is error" return json.dumps({ 'code' : '1' , 'errmsg' :errmsg}) fields = [ "name" , "name_cn" , "password" , "mobile" , "email" , "role" , "status" ] values = [ '%s' % userlist[x] for x in fields] userdict = dict ([(k,values[i]) for i,k in enumerate (fields)]) add_user(userdict) return json.dumps({ 'code' : '0' , 'result' : "register sucess" }) |
数据端代码:
1
2
3
4
|
def add_user(userlist): sql = "insert into users(%s)values('%s')" % ( "," .join(userlist.keys()), "','" .join(userlist.values())) curs.execute(sql) conn.commit() |
前端代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
...省略 < div class = "form-group" > < label for = "password" class = "col-sm-2 control-label" >密码< span class = "red-fonts" ></ span ></ label > < div class = "col-sm-8" > < input id = "password" name = "password" placeholder = "密码" type = "password" class = "form-control" > </ div > </ div > < div class = "form-group" > < label for = "password" class = "col-sm-2 control-label" >确认密码</ label > < div class = "col-sm-8" > < input id = "re_password" name = "re_password" placeholder = "再次确认密码" type = "password" class = "form-control" > </ div > </ div > < div class = "form-group" > < label for = "role" class = "col-sm-2 control-label" >角色</ label > < div class = "col-sm-8" > < select name = "role" > < option value = "admin" class = "form-control" >管理员</ option > < option value = "user" class = "form-control" >普通用户</ option > </ select > </ div > </ div > < div class = "form-group" > < label for = "status" class = "col-sm-2 control-label" >状态</ label > < div class = "col-sm-8" > < select name = "status" > < option value = "0" class = "form-control" >激活</ option > < option value = "1" class = "form-control" >锁定</ option > </ select > </ div > </ div > ...省略 |
因为我的前端是从别的地方套用过来的。这里我采用了继承
判断用户权限就在base.html这个模板里面做
1
2
3
4
5
6
|
< ul class = "nav nav-second-level collapse" > < li class = "group" >< a href = "/userinfo" >个人中心</ a ></ li > {%if username=='admin'%} < li class = "user" >< a href = "/userlist" >用户列表</ a ></ li > {%endif%} </ ul > |
这里的username 是从逻辑端传到前端的。细心的同学好好看下就知道了
1
2
3
4
5
6
7
8
9
10
|
< li id = "jasset" > < a >< i class = "fa fa-inbox" ></ i > < span class = "nav-label" >资产管理</ span >< span class = "fa arrow" ></ span ></ a > {%if username=='admin'%} < ul class = "nav nav-second-level collapse" > < li class = "group" >< a href = "/idc" >机房管理</ a ></ li > < li class = "asset" > < a href = "/cabinet" >机柜管理</ a ></ li > < li class = "idc" > < a href = "/server" >服务器管理</ a ></ li > </ ul > {%endif%} </ li > <!-- 资产管理 --> |
到这里。用户权限就已经做完了
普通用户只可以看到他自己的个人信息。
管理员用户可以看到所有的信息
本文出自 “不抛弃!不放弃” 博客,谢绝转载!
![]() |
![]() |
Python 学习 第十篇 CMDB用户权限管理的更多相关文章
- 练习:python 操作Mysql 实现登录验证 用户权限管理
python 操作Mysql 实现登录验证 用户权限管理
- ClickHouse学习系列之二【用户权限管理】
背景 最近花了些时间看了下ClickHouse文档,发现它在OLAP方面表现很优异,而且相对也比较轻量和简单,所以准备入门了解下该数据库系统.在安装完之后首先做的应该如何设置用户密码以及权限控制.因为 ...
- Python 学习 第十篇:正则表达式 - re
规则表达式(Regular Expression, RE),又称作正则表达式,通常用于检索.替换符合指定规则的文本,正则表达式定义的规则,称作模式(Pattern),即正则表达式的作用是从文本中查找到 ...
- Python学习第十篇——函数初步
def make_album(name,album_name,song_nums = 1): dict_album = {name:[album_name]} if int(song_nums) &g ...
- python学习第十篇——while 的灵活运用
sandwiches_orders = ['apple','banana','mango',"apple","watermelon"] finished_san ...
- PostgreSQL学习之【用户权限管理】说明
背景 最近在学习PostgreSQL,看了用户权限管理文档,涉及到的知识点比较多,顺便写篇文章进行整理并不定时更新,也方便自己后续进行查阅. 说明 注意:创建好用户(角色)之后需要连接的话,还需要修改 ...
- Python学习笔记基础篇——总览
Python初识与简介[开篇] Python学习笔记——基础篇[第一周]——变量与赋值.用户交互.条件判断.循环控制.数据类型.文本操作 Python学习笔记——基础篇[第二周]——解释器.字符串.列 ...
- Python学习笔记进阶篇——总览
Python学习笔记——进阶篇[第八周]———进程.线程.协程篇(Socket编程进阶&多线程.多进程) Python学习笔记——进阶篇[第八周]———进程.线程.协程篇(异常处理) Pyth ...
- Jenkins拾遗--第三篇(用户权限管理)
采访过很多实用Jenkins的同学,发现Jenkins的安全是一个很薄弱的地方.很多公司用作生产部署的Jenkins安全管理都不是很规范,就更别提测试用的Jenkins了. 其实Jenkins是一个很 ...
随机推荐
- 基于MVC模式的数据库综合练习
一.准备 没什么好说的,直接上代码.... 下面是web.xml <servlet> <servlet-name>list_user</servlet-name> ...
- 【Java】WEB-INF目录与META-INF目录的作用
/WEB-INF/web.xml Web应用程序配置文件,描述了 servlet 和其他的应用组件配置及命名规则. /WEB-INF/classes/包含了站点所有用的 class 文件,包括 ser ...
- Android系统的体系结构、开发语言及源码结构
整理自android系统体系结构 Android 是google公司针对手机开发的一个平台,并公布了其中大部分代码,其大部分应用程序都是用JAVA开发的,毕竟它是商业性的产品嘛,有所保留也是理所 当然 ...
- sublime sftp 插件安装及破解
必备插件sftp: 1,Package Control可以用来install其他package 2,sftp远程编辑文件:安装:install->sftp具体配置 sftp工具破解 1, ...
- C# 读写INI 文件
INI 格式: [Section1] KeyWord1 = Value1 KeyWord2 = Value2 ... [Section2] KeyWord3 = Value3 KeyWord4 = V ...
- 【HDOJ】3789 奥运排序问题
写了个函数指针,这题目很水,但是佷烦. #include <iostream> #include <cstring> #include <cstdio> #incl ...
- 小细节:Java中split()中的特殊分隔符 小数点
这两天做项目过程中由于数据表字段设计的太恶心了,导致自己填坑 关于微信支付和支付宝的支付有一个不同点:就是金额的处理,支付宝金额的单位是0.01元,但是微信支付中1表示0.01元,当时设计价格的时候使 ...
- implicitly_wait()隐式等待
# -*- coding:utf-8 -*- """ implicitly_wait():隐式等待 当使用了隐士等待执行测试的时候,如果 WebDriver没有在 DOM ...
- bzoj 2286 [Sdoi2011]消耗战(虚树+树上DP)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=2286 [题意] 给定一棵树,切断一条树边代价为ci,有m个询问,每次问使得1号点与查询 ...
- hdu 4411 arrest 最小费用流
#include <cstdio> #include <cstring> #include <iostream> #include <cmath> #i ...