近期在开发一个平台,平台的展示项需要分权,对应部门进行限制访问,决定利用session进行权限限制。
下面是具体实现,暂未具体设计用户数据权限表,所以粗略写了几个模拟成员来模拟功能,若是急用觉得也还合适。
#用户密码
allowed = (
(\'admin\', \'123123\'),
(\'cuibing\', \'123123\')
)
#权限模拟,利用字典模拟了一个类似switch
def getlevel(username):
level = {
\'admin\':3,
\'cuibing\':1
}
return level.get(username)
class Login:
def GET(self):
return render.login()
def POST(self):
i = web.input()
username = i.get(\'username\')
passwd = i.get(\'password\')
if (username, passwd) in allowed:
#账户校验成功标记
session.logged_in = True
#此处就是赋予权值的过程。
session.level = getlevel(username)
raise web.seeother(\'/\')
else:
return web.seeother(\'/loginerror\')
class Tables:
def GET(self):
if session.get(\'logged_in\', False):
#这里如果没有logged_in的值就会默认返回False
try:
if not session.logged_in:
#防止未登录的url直接跳转
return web.seeother(\'/login\')
elif session.level < 2:
#前面的铺垫工作终于起作用了,这里我将table页的权制设定为2
return \"You have no permission to visit this page!\"
else:
return render.tables()
except Exception, e:
ErrStr = \"tables:\"+ str(e)
logs.writeog(ErrStr)
#这里利用logging写了一个日志系统
return web.seeother(\'/fasle\')
else:
raise web.seeother(\'/login\')
login.png
验证.png