在同一会话中管理两种类型的用户帐户

问题描述 投票:-5回答:3

我的系统中有两种用户。管理员和普通用户。在这里,我打算在登录后根据用户组使用会话变量进行重定向。目前,Admin可以访问独特的功能(管理仪表板等)。普通用户正在拥有个人资料。我需要管理员可以在管理仪表板和用户配置文件之间切换,而无需多次登录或注销。任何人都可以大致了解我该如何实现这一点?

php session
3个回答
1
投票

更好的做法是拥有组(听起来像你这样做)并为每个组分配级别。

例如,普通用户为1,管理员用户为2。

然后,如果您的页面想要向普通用户和管理员显示内容,只要登录用户> = 1然后显示内容即可。

同样,如果您的页面只想向管理员用户显示内容,只要登录用户> = 2,就可以显示该内容。

这只是一个粗略的例子,因为你没有提供太多的上下文或任何例子。


1
投票

这不是一个答案,但您是否尝试过考虑更简单,只是在管理员的常规用户页面上的代码中进行例外处理?

例如,我们将1代表admin,2代表普通用户:

如果$row['privilege'] == 1对常规用户反之亦然,则只能访问admin.php:$row['privilege'] == 2

为什么不在常规用户页面上执行以下操作:

<?php
if ($row['username'] == "admin" && $row['privilege'] == "1") {
// let admin access page
} else {
// don't let anyone access page
}
?>

我的意思是它看起来像这样的东西是最简单的方法吗?

这是我的意见,但其他人可能有更好的解决方案


1
投票

虽然问题很模糊。我将尝试解释在普通Web应用程序中管理用户角色,身份验证和授权的正常过程。

DB型号:

1. Table: User
Columns: id, username, password, ..

2. Table: Roles
Columns: roleId, RoleName

3. Table: UserRoles
Columns: userId, roleId

当用户在AuthController中对自身进行身份验证时,验证成功后,您需要获取与用户关联的角色。然后你需要把这些信息放在会话中。

根据您的观点,您需要根据您的业务条件检查以下条件。

View1.php
if(role in session is 'ADMIN' )
Show the data

View2.php
if(role in session is 'USER' )
Show the data
© www.soinside.com 2019 - 2024. All rights reserved.