Restricting access to content

时间:2011-08-23 作者:moraleida

我正在开发一个功能,只允许客户和医生访问检查结果。但我不太确定我的代码在确保仅授权用户查看方面的优势。

我已经创建了“检查”帖子类型来处理信息,并添加了元盒以在每次检查中保存医生和患者信息(医生和患者也是用户的自定义角色,其功能类似于订阅者)。

然后,我创建了此函数来检查试图查看内容的用户是否有权使用它:

/*
 * Checks if user is logged in and has access to that specific exam
 */
function rm_userauth_check() {
    global $current_user;
      get_currentuserinfo();
      $doctor = get_post_custom_values(\'doctor\');
      $patient = get_post_custom_values(\'patient\');
      $loggeduser = $current_user->user_login;
      $nicename = $current_user->display_name;
      $mainrole = $current_user->roles;

  if ($current_user->data !== null) {

      if ($mainrole[0] == \'doctor\' && $loggeduser == $doctor[0]) {
          return true; // this user is a doctor and is assigned to this exam
      } elseif ($mainrole[0] == \'patient\' && $loggeduser == $patient[0]) {
          return true; // this user is a patient and is assigned to this exam
      } else {
          return false; // this user is not assigned to this exam
      }
  } else {
      return false; // user is not logged in
  }
现在我要在我的一次考试中宣布。php文件为

        <?php if (function_exists(\'rm_userauth_check\')) : ?>

        <?php if (rm_userauth_check()) : ?>

        <?php if ( have_posts() ) while ( have_posts() ) : the_post(); ?>

            <?php get_template_part( \'content\', \'single\' ); ?>

        <?php endwhile; // end of the loop. ?>
           <?php else : ?>
                       <?php wp_redirect( home_url() ); exit; ?>
           <?php endif; ?>
    <?php endif; ?>
你觉得怎么样?我是走对了路还是应该尝试另一种方法?

1 个回复
最合适的回答,由SO网友:kaiser 整理而成

最简单的方法是使用if ( current_user_can( \'capability\' ) ) // do stuff. 您将在codex中找到有关功能的更多信息。您还可以检查一些用户正常附带的数据var_dump() 还有其他。我还有一个很老的plugin 为此。但我不确定它是否仍然适用于当前的WP版本。如果是这样的话,您将获得接近所有的用户数据和一些提示&;新管理页上的代码段。

结束

相关推荐

Security and .htaccess

大约一个月前,我在一个与爱好相关的托管服务器上创建了一个WordPress博客。所以,我目前还不熟悉这一点。由于我担心安全性,我做的一件事就是安装插件WP安全扫描。根据插件结果,我的网站会被检查出来,但我在结果中看到的是一个红旗:文件。wp admin中不存在htaccess/(我在那里ssh了,它不存在)好的,所以我在这个问题上做了大量的搜索,找到了太多的信息。htaccess。我在WordPress上经历了强化WordPress。org网站等,也遇到了这篇文章:http://digwp.com/201