【问题标题】:php page protected with roles but not agains guestsphp 页面受角色保护但不反对客人
【发布时间】:2017-12-11 01:39:08
【问题描述】:

我正在尝试使用角色保护一些 php 页面。当人们登录时,我正在使用它的代码,但如果他们知道链接并且不登录,他们可以访问该页面,我不明白为什么。

谁能帮帮我?

我正在使用此代码来保护只有具有“管理员”角色的用户才能访问的页面。

<?php
// Initialize the session
session_start();

// If session variable is not set it will redirect to login page
if(isset($_SESSION['username'])){if ($_SESSION['role']=='admin') {

} else {
  header('location: index.php');
}
}
?>

【问题讨论】:

  • 警告:编写自己的访问控制层并不容易,而且有很多机会会严重错误。当任何现代的development frameworkLaravel 带有强大的authentication system 内置时,请不要编写自己的身份验证系统。至少遵循recommended security best practices 并且永远不要将密码存储为纯文本
  • ALL 使用 laravel!!那时什么都学不到。
  • 是的,Laravel 通过中间件更好地管理这个,所以在你的下一个项目或当前项目中考虑这个。
  • 我知道 Laravel,但我正在努力学习 :)
  • 对于核心 PHP 项目,我曾经创建一个额外的子管理表,用于添加诸如 orders_access、products_access 之类的列并在其中存储 1 或 0 值,这些值由管理员设置以及 md5 密码。

标签: php password-protection user-roles


【解决方案1】:

试试这个:

<?php
    // Initialize the session
    if(!isset($_SESSION)) {
        session_start();
    }

    // If session variable is not set it will redirect to login page
    if(empty($_SESSION['username'])) {
            header('Location: index.php');
    } else {
        if ($_SESSION['role'] != 'admin') {
            header('Location: index.php');
        }
    }
?>

【讨论】:

  • 您当然可以选择取消拥有用户名的要求,但这当然取决于您:)
猜你喜欢
  • 2021-06-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-11
  • 1970-01-01
  • 2012-06-15
  • 2010-09-17
  • 1970-01-01
相关资源
最近更新 更多