-
2020-06-05 11:25:54
账户管理是后台系统中不可缺少的一部分。做好了这一块,系统至少还能用,要是没做好,系统至少半废。不管是重构还是修补,都是少不了的损失。
一、何为账户管理?
这里说的账户管理,并不是仅仅对于登陆账号的管理,如果把登陆账号设计视为表层设计,那么权限设计就是更深层次的里层设计,而后者才是账户管理的核心。在我看来,账户只是各项权限管理的最终体现,一切更深层次的权限设计都是为账户服务的,为了让每一个账户的操作都达到预期。
说到这里,必须得讲一个概念了——RBAC(基于角色的访问控制)。
提到账户管理、角色管理或许会感觉都很简单。操作层面上来讲,就是先创建角色,再给账户赋予角色,而每一个角色的权限是可以单独设置的,改一个角色的权限,整个角色对应的账户权限都会更改,这样的账户权限管理很方便,也很简单。但是这就是RBAC了吗?
RBAC有4种模型——RBAC0、RBAC1、RBAC2、RBAC3。以下是结合我的见解做的简单介绍。
RBAC0:RBAC的核心。包含账户、组织架构、角色、权限菜单四个部分。这四个部分分别可以多对多,一个账户可以有多个角色或组织,一个组织可以有多个角色,一个角色有多种权限,反之亦然。其中,组织架构通常与数据权限相关。
RBAC1:基于RBAC0添加了角色分层模型。针对角色引入继承概念,添加子角色,子角色的权限一定小于父角色。
RBAC2:基于RBAC0,在用户与角色、角色与角色之间加了一些规则限制。
RBAC3:也叫统一模型,包含上述模型的所有特点。
在我看来,RBAC正是很好用的上述提到的“更深层次的权限设计”方法。
二、登陆账户设计
账户的属性参数直接决定了用户管理系统的数据维度,不同系统差异较大,唯有USER_ID、登陆账号这两项大同小异(系统必备)。
USER_ID,是账户在系统中的唯一标识,一般由系统自动生成,不展示给用户,且不可更改。
登陆账号,一个账户可以有多个登陆账号,比如工号、手机号、企业邮箱等,也可以是USER_ID。后台管理系统不同于C端产品,不建议用微信号、QQ等作为账号名称。一般在新增账号时由用户输入,不可更改。
三、权限设计
权限设计大致可以分为两类:功能权限设计、数据权限设计。仔细分析上述的RBAC0模型,可以得到一个简单的设计思路。
1)功能权限设计
功能权限设计,是指对页面、菜单、操作按钮等跟系统业务功能直接相关的内容作出权限设计,最终通过权限设置可以让不同的账户有不同的操作权限。
功能权限设计可以结合上述RBAC模型中的角色与权限菜单实现。最常用的基于角色的权限树设计,将页面、菜单、操作按钮等内容的权限做成权限树,每一个角色对应一个权限树,通过筛选权限树中的权限可以实现对角色权限的控制。权限树的具体内容是功能权限设计的核心内容,根据系统功能来定,坚持“抓重点、重细节”的核心思想,一般问题不大。
2)数据权限设计
数据权限设计,是指对系统中各页面的数据显示范围作出权限划分,以满足不同层次账户对数据查看或操作的权限要求。就比如公司总经理与普通员工在整个管理系统中能看到的数据范围总不可能是一样的吧~~
这里的数据通常是指系统页面中的表单数据或者汇总数据,可以结合上述RBAC模型中的组织架构与权限菜单实现。在权限菜单中对每一个表单数据做3个权限开关:显示全部、显示组织相关、仅显示自己相关。权限逐级减小,上述EBAC模型中账户和组织架构是可以多对多的,这样给账户设置不同的组织,可以灵活实现多种不同的数据显示需要。
3)小结
上述权限设计思路只写了一方面,在做后台管理时,对于权限需求种类繁多,但是基本都可以通过RBAC1或者RBAC2的拓展得出相应的思路。
以上观点较为粗浅,若有不当,欢迎拍砖~~
参考文章:
https://www.cnblogs.com/niuli1987/p/9871182.html
https://baijiahao.baidu.com/s?id=1640283242263969887&wfr=spider&for=pc
更多相关内容 -
银行账户管理系统 (C++)
2018-12-27 23:48:30程序包含功能: 实现储户开户、储户销户、账户登陆、修改密码、存取款、转账、查找账户 主菜单 ... 登陆(获取账号、密码转到用户操作界面){包含查看信息、存款、取款、销户、... 查询(遍历所有账户信息) 退出程序 -
java银行账户管理系统
2018-05-11 16:50:33支持管理员登录,存款,取款,注册账户,注销账户,转账操作,利息计算以及退出系统操作。 -
Python3实现的用户管理系统
2014-09-16 16:07:59通过Python3实现的简单的用户账号管理系统,可以实现账号的添加、删除及密码的修改,用户数据存储在文件中。 -
C++实验报告——个人银行账户管理系统.docx
2019-11-30 13:00:42北科C++课程实现个人银行账户管理系统的实验报告。北科C++课程实现个人银行账户管理系统的实验报告。北科C++课程实现个人银行账户管理系统的实验报告。北科C++课程实现个人银行账户管理系统的实验报告 -
用户账户管理系统(ASP.NET)
2014-06-20 18:02:58利用ASP.NET(C#)实现的简单用户账户管理系统,该系统分三种角色,管理员、普通用户与普通浏览者。管理员可以查看所有用户列表并管理,修改自身密码。普通用户可以修改自身密码,浏览者可以选择登录与注册。注:该... -
python实训案例-用户账户管理
2021-04-12 23:51:08python实训案例-用户账户管理 描述 具体 语言 python 题目描述 某些网站要求访问者在访问网站内容之前必须先进行登录,若访问者没有该网站的账号,则需要先进行注册。...python实训案例-用户账户管理
描述 具体 语言 python 题目描述 某些网站要求访问者在访问网站内容之前必须先进行登录,若访问者没有该网站的账号,则需要先进行注册。访问者注册完账号后,网站的服务器会保存账号信息,以便访问者下次访问网站可根据保存的信息验证访问者身份。未保障账户安全,访问者可时常修改账户的密码; 要求 注册,登录,修改密码,注销账号 结果:
# 用户类 class User: name = "" password = "" # Dao层数据类 # 用于和文件进行交互 class DaoDate: # 注册函数 def Register(self, user): userId = user.name userPassword = user.password with open('userFile.txt', 'r') as file: userDate = file.readline() while userDate: if userDate.split('~')[0] == userId: return False userDate = file.readline() pass with open('userFile.txt', 'a+') as file: line = userId + "~" + userPassword file.writelines(line + "\n") return True pass # 登录函数 def Login(self, user): with open('userFile.txt', 'r') as file: message = file.readline() while message: Date_name = message.split('~')[0] Date_pass = message.split('~')[1] if Date_name == user.name: if Date_pass == user.password + "\n": return True message = file.readline() return False # 修改密码 def upPassword(self, user): lineList = [] with open('userFile.txt', 'r') as file: lineList = file.readlines() for mes in lineList: if user.name == mes.split("~")[0]: lineList.remove(mes) lineList.append(user.name + "~" + user.password + "\n") break pass with open('userFile.txt', 'w') as file: pass with open('userFile.txt', 'w') as file: for i in lineList: file.writelines(i) pass def Zhuxiao(self, us): with open('userFile.txt', 'r') as ff: lineList = ff.readlines() for mes in lineList: if us.name == mes.split("~")[0]: lineList.remove(mes) break pass with open('userFile.txt', 'w') as file: pass with open('userFile.txt', 'w') as file: for i in lineList: file.writelines(i) pass # u = User() # u.name = "123q" # u.password = "45kdwjcner6" # d = DaoDate() # print(d.Login(u)) # d.upPassword(u) # 展示界面 def View(): print(" ------欢迎来到登录界面------") print("-" * 30) print("|", " " * 11, "1.注册", " " * 8, "|") print("|", " " * 11, "2.登录", " " * 8, "|") print("|", " " * 11, "3.修密", " " * 8, "|") print("|", " " * 11, "4.注销", " " * 8, "|") print("|", " " * 11, "5.退出", " " * 8, "|") print("-" * 30) View() flag = False fun = int(input("请输入你的操作:")) while fun != 5: if fun == 1: # 进到注册界面 UserId = str(input("请输入你的账号:")) UserPassword = str(input("请输入你的密码:")) u = User() u.name = UserId u.password = UserPassword d = DaoDate() boo = d.Register(u) if boo: print("注册成功!") else: print("注册失败!") elif fun == 2: # 进到登录界面 Login_UserId = input("请输入你的账号:") Login_UserPassword = input("请输入你的密码:") u = User() u.name = Login_UserId u.password = Login_UserPassword d = DaoDate() boo = d.Login(u) if boo: print("登录成功!") else: print("登录失败!") elif fun == 3: # 进到修改密码阶段 Test_UserId = input("请输入你的原始账号:") Test_UserPassword = input("请输入你的原始密码:") u = User() u.name = Test_UserId u.password = Test_UserPassword d = DaoDate() boo = d.Login(u) if boo: newPassword_1 = input("请输入你的新密码:") newPassword_2 = input("请再次输入你的新密码:") while newPassword_1 != newPassword_2: print("两次密码不一致,请重新输入!") newPassword_1 = input("请输入你的新密码:") newPassword_2 = input("请再次输入你的新密码:") u.password = newPassword_1 d.upPassword(u) else: print("登录失败!") elif fun == 4: Test_UserId = input("请输入你要注销的账号:") Test_UserPassword = input("请输入你要注销的密码:") us = User() us.name = Test_UserId us.password = Test_UserPassword d = DaoDate() boo = d.Login(us) if boo: d.Zhuxiao(us) print("注销成功") else: print("注销失败!") else: print("输入无效,请重新输入!") fun = int(input("请输入你的操作:"))
-
Ubuntu 账户管理
2020-12-30 13:14:34Ubuntu 账户管理 Ubuntu 默认不能直接用root帐户登录,必须从第一个创建的用户(安装时创建)通过su或sudo来获得root权限。 一、 sudo(Super User Do) sudo + 直接运行提示无权限的命令 不是所有命令都能用sudo...Ubuntu 账户管理
Ubuntu 默认不能直接用 root 帐户登录,必须从第一个创建的用户(安装时创建)通过 su 或 sudo 来获得 root 权限。
一、 sudo(Super User Do)
sudo + 直接运行提示无权限的命令
sudo 当前用户以 root 权限执行操作,类似与 windows 以管理员身份运行。
不是所有命令都能用 sudo 执行的,比如 cd 命令前不能用 sudo。
例如:
sudo pip3 install packagename # 全局安装,安装后全局可用。 pip3 install --user packagename # 该用户安装,安装后仅该用户可用。
在当前终端第一次用 sudo 运行命令时会提示输入当前用户的密码。
sudo 的配置文件为 “/etc/sudoers”,修改配置文件:
sudo visudo -f /etc/sudoers
常用选项
• -l(小写的L) : 察看当前用户使用 sudo 可以运行的命令,并不是在每台机器上都能用 sudo 使用所有需要权限的命令。
• -V : 察看本机 sudo 的版本。
• -k : 强制用户下次使用 sudo 时输入密码。例如:
1、ubuntu 修改 root 密码:
[sudo] passwd 或者 [sudo] passwd root # 默认为 root
2、当前用户更改密码:
passwd
3、清除密码:
passwd –d
二、 su(Switch User)
su [username] (默认为root)
su 只能用来切换用户,输入欲切换到的用户的密码。
第一次使用,当输入 su 命令后, 系统会要求输入 root 的密码。
刚安装的系统 root 的密码是随机的,需要输入 passwd 按照提示改变 root 的密码。
root 账户状态下使用 su 切换到低权限用户时不需要输入密码。常用选项
• -c/–command + [账户名(缺省一般为root)] [命令] :以该账户名执行输入的命令,执行完毕切换回原来的账户。
• -/-l/-login :切换账户后自动更新环境变量与切换到的用户相同。
• -h :获取su的详细解释。例如:
1、切换到到 root 用户:
su 或 su root
2、切换到其他:
su 用户名
内容出自:https://www.cnblogs.com/springsnow/p/12206683.html
三、创建用户 adduser 和 useradd
Linux 中通常会使用 useradd,而 Ubuntu 中通常使用 adduser。
只有 root 才能将用户或组添加到系统, 默认为 root。[sudo] adduser newuser
adduser 可以不带任何参数使用,自动添加用户 newuser 到新组 newuser 、创建主目录 /home/newuser、 提示设置密码和用户信息。
[sudo] useradd newuser [sudo] passwd newuser [sudo] useradd -d /home/newuser newuser
useradd 创建用户分三步:用户名,密码和主目录。
四、删除用户
使用 root 权限删除用户
[sudo] userdel 账户
五、设置 sudo 权限
为用户添加 sudo 权限,可以使用修改 sudoers 和 adduser 两种方法:
etc/sudoers 文件就是与 sudo 组有关的文件,在里面添加一行newuser ALL=(ALL) ALL
第二种是使用 adduser 命令,添加用户的同时赋予 root 权限:
[sudo] adduser newuser sudo
内容出自:https://blog.csdn.net/chaipp0607/article/details/105353239
补充:
1、sudo (do something as the supervisor)是 su 的加强版
2、Ctrl+Alt+t 打开终端
3、Ctrl+c 发送 Terminal 到当前的程序,强制结束当前进程。
4、Ctrl+z 挂起当前进程,fg 加编号就能把挂起的进程返回到前台。配合 bg 和 fg 命令进行前后台切换会非常方便。
5、Ctrl+d 退出(exit) -
银行账户管理系统
2017-02-19 12:05:23银行帐目管理系统不仅要求操作方便而且要求界面简洁,它还需要实现帐目管理,用户查询和查询统计功能。 针对上述情况和要求,采用软件工程的开发原理,依据软件流程过程规范,按照需求分析、概要设计、详细设计、... -
Linux 用户账户和组管理
2014-04-25 14:18:33本课件详细介绍了linux的用户账户和组管理设置,方便大家学习。 -
win10修改管理员名称怎么改名_win10本地账户管理员改名如何操作
2021-07-11 00:41:48下面就来告诉大家win10本地账户管理员改名操作方法。具体方法:1、在Windows10系统桌面,右键点击屏幕上的“此电脑”图标,在弹出的右键菜单中选择“管理”菜单项2、在打开的计算机管理窗口中,...在win10系统中,用户都有系统默认一致的管理员名称administrator,但是对于庞大的用户量来说可能不太适合,对此有些用户就想要将管理员名称打上自己的烙印,那么win10修改管理员名称怎么改名呢?下面就来告诉大家win10本地账户管理员改名操作方法。
具体方法:
1、在Windows10系统桌面,右键点击屏幕上的“此电脑”图标,在弹出的右键菜单中选择“管理”菜单项
2、在打开的计算机管理窗口中,依次点击“计算机管理/系统工具/本地用户和组”菜单项
3、点击“本地用户和组”菜单项后,在打开的折叠菜单中选择“用户”菜单项
4、这时在右侧窗口中就会显示出所有的登录账号,右键点击要修改的帐号,在弹出的右键菜单中选择“重命名”菜单项,这时原来的用户名变成了可修改的状态,直接进行修改即可。
5、我们也可以双击登录用户名,在打开的属性窗口中,可以设置登录用户名的全名,最后点击确定按钮
6、返回到计算机管理窗口中,可以看到修改后的用户名及其全名
7、重新启动电脑后,就可以使用修改后的全名登录Windows10系统了。
上述就是win10本地账户管理员改名操作方法了,还有不懂得用户就可以根据小编的方法来操作,希望能够帮助到大家。
我要分享到:
-
银行账户管理系统C++
2012-10-20 10:18:42银行账户管理程序 主要内容: 问题描述 设计一个银行账户管理程序,账户的信息有账号(唯一)、姓名、余额、身份证号码、单位、电话号码、地址等, 允许用户进行如下操作:开户、销户、存款、取款、转账、查询... -
用户管理(详解与步骤)
2020-08-06 13:15:37重启后主机名生效 物理地址:MAC【不能换,可以伪装(ARP欺骗)】 用户管理 拿到内网渗透时:组管理很重要 系统看安全标识符,人看用户名称 每个用户进去都会在自己的家目录里【user就是家目录】 用户账户分为:... -
银行账户管理系统 c++
2018-06-13 11:20:58银行账户管理系统,使用vs2015写的,系统功能包括增加用户,删除用户,修改账户余额,用户需要账号密码登陆,需要做C++课程设计的可以拿去看看。 -
javaWeb银行账户管理系统源码
2014-04-24 21:31:05银行账户管理系统 系统采用 struts2.X 构架 数据库为 sqlserver 系统模块: 用户注册模块 用户登录模块 用户存款模块 用户取款模块 用户交易信息 用户信息更改 -
(java se 代码)Bank Account Management System 银行账户管理子系统
2014-04-18 08:30:12Bank Account Management System 银行账户管理子系统 简称BAMS 这是一个基于C/S结构的银行账户在线管理系统,用户可以通过ATM终端界面来操作自己的银行账户. ATM 1: 要求1:封装一个Account类 - 业务数据 写一个账户... -
阳光财产保险集团资金管理系统用户手册(账户管理篇).doc
2021-10-01 10:56:39阳光财产保险集团资金管理系统用户手册(账户管理篇).doc -
windows用户管理
2019-03-20 16:22:36本地安全策略:secpol.msc用于特殊用途,一般不需要改其权限1,与使用者关联的用户账户administrator(管理员)、guest(来宾用户)2,与Windows组件关联的用户账户system(本地系统) network service(网络服务)、... -
Linux(CentOS7)之用户管理
2019-02-20 17:32:50Linux的多用户概念是指多个用户同时可以使用这个系统。每个用户一般在/home下的都有自己的用户目录,root的家目录在/root。用户执行任务的时候一般在自己的家目录中执行,用户之间互相不影响。 1.查看当前登录用户 ... -
SVN 用户管理
2018-06-11 17:47:12首先,我们要有一个svn的管理员用户,我们是admin,对应在linux上也有一个svnadmin的操作系统用户。下面区分说明这两个用户,svnadmin是跟资源库存储相关的。因为要跟apache的访问对应,所以要修... -
Android 账户管理代码
2014-09-19 18:12:04简单讲述了Android上面基于账户管理的流程 -
Linux账户管理详解
2022-01-13 15:47:15组用户和组相关配置文件/etc/passwd文件/etc/shadow文件/etc/group文件/etc/login.defs文件/etc/default/useradd文件/etc/skel文件账户管理相关命令组管理命令:groupadd命令:newgrp命令:groupdel用户管理命令:... -
linux账户管理和权限管理.pptx
2020-02-22 17:08:51Linux基础Linux账户管理和权限管理大理学院数学与计算机学院硬件教研室 赵贵文教学目的和要求 理解账户实质熟悉账户配置文件学会设置和管理口令理解Linux系统的权限学会设置基本操作权限了解特殊权限的使用重点内容 ... -
linux账户管理与操作权限x_补扣账户管理能取消吗
2020-03-09 06:34:27账户系统文件 ;/etc/passwd &/etc/...修改用户账户;修改用户帐号;禁用和恢复用户账户 ;禁止用户登录;用userdel删除用户账户;组的管理和使用;组的管理;在用户组间切换;用户组及权限;用户安全;限制用户的某些资源访问 -
Python中用户管理(用户的登陆、用户的增删改查)
2019-07-05 12:36:171.系统里面有多个用户,用户的信息目前保存在列表里面 users = [‘root’,‘westos’] passwd = [‘123’,‘456’] 2.用户登陆(判断用户登陆是否成功 1).判断用户是否存在 2).如果存在 1).判断用户密码是否正确 如果... -
SSH框架实现简单的用户管理系统(增删改查)
2015-04-15 10:13:17SSH简单的入门案例,对用户的信息进行管理,实现增删改查功能。 -
如何把电脑普通用户权限提升超级管理员账户
2021-06-23 04:35:18电脑win10会默认的让你新建一个用户。...一、开启系统默认的administrator账户打开运行,输入“compmgmt.msc”后进入计算机管理。开启administrator账户。(在win10中administrator账户默认是没有开启的)... -
Linux实验:用户与组管理_创建用户和组
2020-12-16 10:37:54实验4 用户与组的管理 实验目的 1掌握创建用户和组群的命令 2了解账户和组群的相关配置文件 3了解实现账户安全的知识 实验材料 计算机 VMware虚拟机 Centos 一实验原理 1用户和组群账户管理相关命令 useradd,usermod... -
第6节 用户管理及组管理
2021-12-08 20:56:47本文首先介绍了服务器系统的分类及常见版本,之后主要讲解了利用桌面和DOS命令对用户进行管理以及权限赋予,最后还讲解了如何利用组简化对用户权限的赋予。