Python 学习 第十篇 CMDB用户权限管理

本文介绍了一个使用Python实现的配置管理系统(CMDB)中用户权限管理的设计与实现过程。该系统支持两种用户角色:普通用户与管理员,其中管理员具有全部权限。文章详细展示了用户注册流程、权限验证逻辑及前后端代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Python 学习 第十篇 CMDB用户权限管理

2016-10-10 16:29:17

标签:  python
版权声明:原创作品,谢绝转载!否则将追究法律责任。

不管是什么系统,用户权限都是至关重要的。所以我在注册用户的时候,就为他们分了两种权限。一种是普通用户的权限,一种是管理员权限。普通用户在数据库中的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  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  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 <!-- 资产管理 -->

到这里。用户权限就已经做完了

普通用户只可以看到他自己的个人信息。

管理员用户可以看到所有的信息

本文出自 “不抛弃!不放弃” 博客,谢绝转载!

分享至 一键收藏,随时查看,分享好友!
 周福金
1人
了这篇文章
类别: python┆阅读( 57)┆评论(0) ┆ 返回博主首页返回博客首页

转载于:https://www.cnblogs.com/weiman3389/p/6223327.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值