我的系统中有两种用户。管理员和普通用户。在这里,我打算在登录后根据用户组使用会话变量进行重定向。目前,Admin可以访问独特的功能(管理仪表板等)。普通用户正在拥有个人资料。我需要管理员可以在管理仪表板和用户配置文件之间切换,而无需多次登录或注销。任何人都可以大致了解我该如何实现这一点?
更好的做法是拥有组(听起来像你这样做)并为每个组分配级别。
例如,普通用户为1,管理员用户为2。
然后,如果您的页面想要向普通用户和管理员显示内容,只要登录用户> = 1然后显示内容即可。
同样,如果您的页面只想向管理员用户显示内容,只要登录用户> = 2,就可以显示该内容。
这只是一个粗略的例子,因为你没有提供太多的上下文或任何例子。
这不是一个答案,但您是否尝试过考虑更简单,只是在管理员的常规用户页面上的代码中进行例外处理?
例如,我们将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
}
?>
我的意思是它看起来像这样的东西是最简单的方法吗?
这是我的意见,但其他人可能有更好的解决方案
虽然问题很模糊。我将尝试解释在普通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