- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我打算制作一个小型用户系统,但我有问题。
如果我要做一个注册表(mysql),不加密就只把密码和用户名存入数据库有什么问题?
我正在考虑如何构建管理部分。我应该只检查数据库中的一列以查看用户是否是管理员吗?如果为真,则会显示管理页面。
对于管理员权限,假设我有 3 项权限:删除用户、批准用户和移动用户。在一些场景中,我可能只想给一些人批准,或删除,或全部,或任何组合的能力。我该怎么做?我正在考虑为每种能力设置一列,并让脚本检查每一列。假设我有超过 20 项权力将被添加。
如果我有一个网站,人们可以在其中创建群组并成为其群组的管理员,并且这些管理员可以为群组中的人员提供不同的管理权限组合(例如,Zack 创建了名为 Mountain 的群组并授予一个成员能够批准新的组成员并授予第二个成员删除成员的能力并为第三个成员分配删除和批准的能力。我将如何在 MySQL 中构建它?我应该使用一个列来说明他们是哪个组管理员他们有什么能力?例如列:删除、批准、GroupMemberOf、GroupAdminOf 和使用检查。
我有一个想法,但我想学习更复杂的方法。
感谢您到目前为止的回答,但是,我真的是在寻找关于结构的想法(问题 2 - 4)。如果我能帮助解决这个问题,请告诉我。 p>
最佳答案
2 - 4. 使用访问级别表(1:成员,2:主持人(批准),3:管理员),并使用另一个不同的表来存储用户权限,您可以在其中存储多对多连接,如下所示:
id (auto_increment)|usr_id|role_id|group_id
-------------------------------------------
1 |1 |3 |-1
2 |2 |2 |1
3 |2 |3 |2
4 |3 |1 |2
在您的例子中,用户 1 是整个站点的管理员,用户 2 是组 3 的管理员和组 2 的版主,用户 3 是组 2 的成员。
[编辑:]
关于限制不同角色的权力的更多想法:根据您的设置,您应该在每页的基础上使用一些角色强制,例如在 MVC 框架中,我将扩展基本 Controller 以要求必须为每个方法调用一个(角色)授权函数,否则它应该抛出异常。不需要用户登录的方法(页面)可以使用虚拟授权。
所以授权类看起来像
class Authorization
{
public $authorized = false;
public function dummy()
{
$this->authorized = true;
}
public function member($usr_id, $group_id = null)
{
$sql = "SELECT usr_id FROM usr_roles WHERE usr_id = " . $usr_id . ($group_id !== null) ? " AND group_id " . $group_id : "";
// count the results of $sql query
// or some more stuff
if ($results > 1)
{
$this->authorized = true;
}
else
{
$this->authorized = false;
}
}
// the other functions
}
您的新 Controller 基类将如下所示:
class BaseController extends Controller
{
protected $authorization;
public function __construct()
{
$this->authorization = new Authorization();
}
public function render()
{
if ($this->authorization->authorized === true)
{
parent::render
}
else
{
// redirect to not authorized page
}
}
}
最后,您的 Controller 将如下所示:
class IndexController extends BaseController
{
// some stuff, methods etc.
// methods needs logged in user and user must be a member.
public function index()
{
$this->authorization->member($session_user->getId());
}
}
[EDIT2:]
如果您不熟悉 OOP,那么您可以执行以下操作:
这是角色表的示例布局:
role_id|role_name
-----------------
1 |member
2 |moderator
3 |admin
然后您可以创建一个函数 authorize() 以包含在您的所有文件中:
// role_name = "member", "moderator", "admin"
function authorize($usr_id = null, $role_name = null, group_id = null)
{
// test for user in group and role, return boolean
}
在您的文件中包含此函数并执行以下操作
if (authorize($usr_id, "moderator", 2)
{
// show stuff, if user with $usr_id is moderator for group 2
}
else
{
// do something else
}
// stuff for all
关于php - 如何在网站内构建群组? (管理员、管理员权限、用户身份),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1527069/
在为 Web 应用程序用例图建模时,为用户可以拥有的每个角色创建一个角色是否更好?或拥有一个角色、用户和一个具有特权的矩阵? guest < 用户 < 版主 < 管理员 1: guest 、用户、版主
我无法使用 Elixir 连接到 Postgres: ** (Mix) The database for PhoenixChat.Repo couldn't be created: FATAL 28P
这个问题已经有答案了: Group by field name in Java (7 个回答) 已关闭 7 年前。 我必须编写一个需要 List 的方法并返回 Map> . User包含 Person
感谢您的帮助,首先我将显示代码: $dotaz = "Select * from customers JOIN contracts where customers.user_id ='".$_SESS
我只想向所有用户中的一个用户显示一个按钮。我尝试了 orderByKey() 但没有成功! 用户模型有 id 成员,我尝试使用 orderByChild("id") 但结果相同! 我什至尝试了以下技巧
我们在工作中从 MongoDB 切换到 Postgres,我正在建立一个 BDR 组。 在这一步,我正在考虑安全性并尽可能锁定。因此,我希望设置一个 replication 用户(角色)并让 BDR
export class UserListComponent implements OnInit{ users; constructor(private userService: UserS
我可以使用 Sonata User Bundle 将 FOS 包集成到 sonata Admin 包中。我的登录功能正常。现在我想添加 FOSUserBundle 中的更改密码等功能到 sonata
在 LinkedIn 中创建新应用程序时,我得到 4 个单独的代码: API key 秘钥 OAuth 用户 token OAuth 用户密码 我在 OAuth 流程中使用前两个。 的目的是什么?最后
所以..我几乎解决了所有问题。但现在我要处理另一个问题。我使用了这个连接字符串: SqlConnection con = new SqlConnection(@"Data Source=.\SQLEX
我有一组“用户”和一组“订单”。我想列出每个 user_id 的所有 order_id。 var users = { 0: { user_id: 111, us
我已经为我的Django应用创建了一个用户模型 class User(Model): """ The Authentication model. This contains the u
我被这个问题困住了,找不到解决方案。寻找一些方向。我正在用 laravel 开发一个新的项目,目前正致力于用户认证。我正在使用 Laravels 5.8 身份验证模块。 对密码恢复 View 做了一些
安装后我正在使用ansible配置几台计算机。 为此,我在机器上本地运行 ansible。安装中的“主要”用户通常具有不同的名称。我想将该用户用于诸如 become_user 之类的变量. “主要”用
我正在尝试制作一个运行 syncdb 的批处理文件来创建一个数据库文件,然后使用用户名“admin”和密码“admin”创建一个 super 用户。 到目前为止我的代码: python manage.
关闭。这个问题是opinion-based 。目前不接受答案。 想要改进这个问题吗?更新问题,以便 editing this post 可以用事实和引文来回答它。 . 已关闭 6 年前。 Improv
我已在 Azure 数据库服务器上设置异地复制。 服务器上运行的数据库之一具有我通过 SSMS 创建的登录名和用户: https://learn.microsoft.com/en-us/azure/s
我有一个 ionic 2 应用程序,正在使用 native FB Login 来检索名称/图片并将其保存到 NativeStorage。流程是我打开WelcomePage、登录并保存数据。从那里,na
这是我的用户身份验证方法: def user_login(request): if request.method == 'POST': username = request.P
我试图获取来自特定用户的所有推文,但是当我迭代在模板中抛出推文时,我得到“User”对象不可迭代 观看次数 tweets = User.objects.get(username__iexact='us
我是一名优秀的程序员,十分优秀!