本文整理汇总了PHP中RBAC::checkAccess方法的典型用法代码示例。如果您正苦于以下问题:PHP RBAC::checkAccess方法的具体用法?PHP RBAC::checkAccess怎么用?PHP RBAC::checkAccess使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类RBAC
的用法示例。
在下文中一共展示了RBAC::checkAccess方法的10个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: AccessDecision
public static function AccessDecision($appName = APP_NAME)
{
if (RBAC::checkAccess()) {
$accessGuid = md5($appName . MODULE_NAME . ACTION_NAME);
if (empty($_SESSION[C('ADMIN_AUTH_KEY')])) {
if (C('USER_AUTH_TYPE') == 2) {
$accessList = RBAC::getAccessList($_SESSION[C('USER_AUTH_KEY')]);
} else {
if ($_SESSION[$accessGuid]) {
return true;
}
$accessList = $_SESSION['_ACCESS_LIST'];
}
$module = defined('P_MODULE_NAME') ? P_MODULE_NAME : MODULE_NAME;
if (!isset($accessList[strtoupper($appName)][strtoupper($module)][strtoupper(ACTION_NAME)])) {
$_SESSION[$accessGuid] = false;
return false;
} else {
$_SESSION[$accessGuid] = true;
}
} else {
return true;
}
}
return true;
}
示例2: _initialize
protected function _initialize()
{
/*if (!session(C('ADMIN_AUTH_KEY'))) {
$this->error('请重新登录',U('Admin/index'));
} */
define('RES', THEME_PATH . 'common');
define('STATICS', TMPL_PATH . 'static');
//Input::noGPC();
$is_passed = true;
if (RBAC::checkAccess()) {
$is_passed = RBAC::AccessDecision();
}
if ($is_passed == false) {
echo '不允许查看';
exit;
}
$this->assign('action', $this->getActionName());
}
示例3: _initialize
public function _initialize()
{
import('ORG.RBAC.RBAC');
// 检查认证
if (RBAC::checkAccess()) {
//检查认证识别号
if (!$_SESSION[C('USER_AUTH_KEY')]) {
//跳转到认证网关
redirect(PHP_FILE . C('USER_AUTH_GATEWAY'));
}
// 检查权限
if (!RBAC::AccessDecision()) {
$this->error('没有权限!');
}
}
if (isset($_SESSION[C('USER_AUTH_KEY')])) {
//显示菜单项
$menu = array();
if (isset($_SESSION['menu' . $_SESSION[C('USER_AUTH_KEY')]])) {
//如果已经缓存,直接读取缓存
$menu = $_SESSION['menu' . $_SESSION[C('USER_AUTH_KEY')]];
} else {
//读取数据库模块列表生成菜单项
$node = D("Node");
$id = $node->getField("id", "name='" . APP_NAME . "'");
$list = $node->where('level=2 AND status=1 AND pid=' . $id)->field('id,name,title')->order('seqNo asc')->findAll();
$accessList = $_SESSION['_ACCESS_LIST'];
foreach ($list as $key => $module) {
if (isset($accessList[strtoupper(APP_NAME)][strtoupper($module['name'])]) || $_SESSION['administrator']) {
//设置模块访问权限
$module['access'] = 1;
$menu[$key] = $module;
}
}
//缓存菜单访问
$_SESSION['menu' . $_SESSION[C('USER_AUTH_KEY')]] = $menu;
}
$this->assign('menu', $menu);
$this->assign("login", true);
//显示登录用户名称
$this->assign('loginUserName', $_SESSION['loginUserName']);
}
parent::_initialize();
}
示例4: _initialize
public function _initialize()
{
import('ORG.RBAC.RBAC');
/* 检查认证*/
if (!RBAC::checkAccess()) {
//检查认证识别号
if (!$_SESSION[C('USER_AUTH_KEY')]) {
//跳转到认证网关
redirect(PHP_FILE . C('USER_AUTH_GATEWAY'));
}
// 检查权限
if (!RBAC::AccessDecision()) {
$this->error('没有权限!');
}
}
import("ORG.Util.Page");
//引用分页类
import("@.Com.ajaxpage");
//引用ajax分页类
}
示例5: AccessDecision
static function AccessDecision()
{
//检查是否需要认证
if (RBAC::checkAccess()) {
//检查认证识别号
if (!Session::is_set(C('USER_AUTH_KEY'))) {
//跳转到认证网关
redirect(PHP_FILE . C('USER_AUTH_GATEWAY'));
}
//存在认证识别号,则进行进一步的访问决策
$accessGuid = md5(APP_NAME . MODULE_NAME . ACTION_NAME);
if (!Session::is_setLocal('administrator')) {
//管理员无需认证
if (C('USER_AUTH_TYPE') == 2) {
//加强验证和即时验证模式 更加安全 后台权限修改可以即时生效
//通过数据库进行访问检查
$accessList = RBAC::getAccessList();
} else {
// 如果是管理员或者当前操作已经认证过,无需再次认证
if (Session::is_set($accessGuid)) {
return;
}
//登录验证模式,比较登录后保存的权限访问列表
$accessList = Session::get('_ACCESS_LIST');
}
if (!isset($accessList[strtoupper(APP_NAME)][strtoupper(MODULE_NAME)][strtoupper(ACTION_NAME)])) {
throw_exception(L('_VALID_ACCESS_'));
} else {
Session::set($accessGuid, true);
}
}
}
return true;
}
示例6: AccessDecision
public static function AccessDecision($appName = APP_NAME)
{
//检查是否需要认证
if (RBAC::checkAccess()) {
//存在认证识别号,则进行进一步的访问决策
$accessGuid = md5($appName . MODULE_NAME . ACTION_NAME);
if (empty($_SESSION[C('ADMIN_AUTH_KEY')])) {
if (C('USER_AUTH_TYPE') == 2) {
//加强验证和即时验证模式 更加安全 后台权限修改可以即时生效
//通过数据库进行访问检查
$accessList = RBAC::getAccessList($_SESSION[C('USER_AUTH_KEY')]);
} else {
// 如果是管理员或者当前操作已经认证过,无需再次认证
if ($_SESSION[$accessGuid]) {
return $_SESSION[$accessGuid];
}
//登录验证模式,比较登录后保存的权限访问列表
$accessList = $_SESSION['_ACCESS_LIST'];
}
//栏目权限
if (!isset($_SESSION[C('USER_CONTENT_KEY')])) {
$table = array('role' => C('RBAC_ROLE_TABLE'), 'user' => C('RBAC_USER_TABLE'));
$sql = "select role.typeids from " . $table['role'] . " as role," . $table['user'] . " as user" . " where user.user_id=" . $_SESSION[C('USER_AUTH_KEY')] . " and user.role_id=role.id and role.status=1";
//echo $sql;
$rs = M()->query($sql);
if ($rs) {
$_SESSION[C('USER_CONTENT_KEY')] = $rs[0]['typeids'];
} else {
$_SESSION[C('USER_CONTENT_KEY')] = '';
}
}
//判断是否为组件化模式,如果是,验证其全模块名
$module = defined('P_MODULE_NAME') ? P_MODULE_NAME : MODULE_NAME;
//追影改写默认为无需认证 只有设置了才验证因为没有添加进node的实在太多
$model_node = new Model(C('RBAC_NODE_TABLE'), NULL);
$t2 = $model_node->where("upper(`name`)='" . strtoupper($module) . "' and level=2")->find();
if (!$t2) {
$_SESSION[$accessGuid] = false;
return false;
}
$t = $model_node->where("upper(`name`)='" . strtoupper(ACTION_NAME) . "' and level=3 and pid=" . $t2['id'])->find();
//echo $model_node->getLastSql();
if ($t) {
//方法存在于node检查是否有权限
if (!isset($accessList[strtoupper($appName)][strtoupper($module)][strtoupper(ACTION_NAME)])) {
$_SESSION[$accessGuid] = false;
return false;
} else {
$_SESSION[$accessGuid] = true;
return true;
}
} else {
//方法不存在只module检查
if (!isset($accessList[strtoupper($appName)][strtoupper($module)])) {
$_SESSION[$accessGuid] = false;
return false;
} else {
$_SESSION[$accessGuid] = true;
return true;
}
}
} else {
//管理员无需认证
return true;
}
}
return true;
}
示例7: _initialize
function _initialize()
{
$this->getAuth();
//用户信息
$this->u = D('User');
if (!empty($this->uid)) {
$r = $this->u->find($this->uid);
//echo $this->u->getLastSql();
//var_dump($r);
$this->assign('user', $r);
}
if (C('USER_AUTH_ON')) {
import('@.ORG.Util.RBAC_WEB');
$app = 'USER';
} else {
import('ORG.Util.RBAC');
$app = APP_NAME;
}
//var_dump(RBAC::checkAccess());
//exit('xx');
if (RBAC::checkAccess()) {
//认证,临时简化版
$this->getAuth();
//var_dump($this->user);exit('s');
if (empty($this->user->uid)) {
//是否登录
redirect(C('USER_AUTH_GATEWAY'));
//是否有权限
}
//var_dump(RBAC::AccessDecision ());exit('x');
if (!RBAC::AccessDecision($app)) {
//检查认证识别号
if (!$_SESSION[C('USER_AUTH_KEY')]) {
//跳转到认证网关
redirect(C('USER_AUTH_GATEWAY'));
}
// 没有权限 抛出错误
if (C('RBAC_ERROR_PAGE')) {
// 定义权限错误页面
redirect(C('RBAC_ERROR_PAGE'));
} else {
if (C('GUEST_AUTH_ON')) {
$this->assign('jumpUrl', PHP_FILE . C('USER_AUTH_GATEWAY'));
}
// 提示错误信息
$this->error(L('_VALID_ACCESS_'));
}
}
} else {
//不认证
}
//exit;
// 用户权限检查
/*if (C ( 'USER_AUTH_ON' ) && !in_array(MODULE_NAME,explode(',',C('NOT_AUTH_MODULE')))) {
import ( 'ORG.Util.RBAC' );
if (! RBAC::AccessDecision ()) {
//检查认证识别号
if (! $_SESSION [C ( 'USER_AUTH_KEY' )]) {
//跳转到认证网关
redirect ( PHP_FILE . C ( 'USER_AUTH_GATEWAY' ) );
}
// 没有权限 抛出错误
if (C ( 'RBAC_ERROR_PAGE' )) {
// 定义权限错误页面
redirect ( C ( 'RBAC_ERROR_PAGE' ) );
} else {
if (C ( 'GUEST_AUTH_ON' )) {
$this->assign ( 'jumpUrl', PHP_FILE . C ( 'USER_AUTH_GATEWAY' ) );
}
// 提示错误信息
$this->error ( L ( '_VALID_ACCESS_' ) );
}
}
}*/
$this->keywords = C('keywords');
$this->description = C('description');
}
示例8: AccessDecision
static function AccessDecision($appName = APP_NAME)
{
//检查是否需要认证
if (RBAC::checkAccess()) {
//检查认证识别号
if (!$_SESSION[C('USER_AUTH_KEY')]) {
if (C('GUEST_AUTH_ON')) {
// 开启游客授权访问
if (!isset($_SESSION['_ACCESS_LIST'])) {
// 保存游客权限
RBAC::saveAccessList(C('GUEST_AUTH_ID'));
}
} else {
// 禁止游客访问跳转到认证网关
redirect(PHP_FILE . C('USER_AUTH_GATEWAY'));
}
}
//存在认证识别号,则进行进一步的访问决策
$accessGuid = md5($appName . MODULE_NAME . ACTION_NAME);
if (!$_SESSION[C('ADMIN_AUTH_KEY')]) {
//管理员无需认证
if (C('USER_AUTH_TYPE') == 2) {
//加强验证和即时验证模式 更加安全 后台权限修改可以即时生效
//通过数据库进行访问检查
$accessList = RBAC::getAccessList();
} else {
// 如果是管理员或者当前操作已经认证过,无需再次认证
if ($_SESSION[$accessGuid]) {
return true;
}
//登录验证模式,比较登录后保存的权限访问列表
$accessList = $_SESSION['_ACCESS_LIST'];
}
//判断是否为组件化模式,如果是,验证其全模块名
$module = defined('C_MODULE_NAME') ? C_MODULE_NAME : MODULE_NAME;
if (!isset($accessList[strtoupper($appName)][strtoupper($module)][strtoupper(ACTION_NAME)])) {
//throw_exception(L('_VALID_ACCESS_'));
return false;
} else {
$_SESSION[$accessGuid] = true;
}
}
}
return true;
}
示例9: AccessDecision
public static function AccessDecision($appName = APP_NAME)
{
//检查是否需要认证
if (RBAC::checkAccess()) {
//存在认证识别号,则进行进一步的访问决策
$accessGuid = md5($appName . MODULE_NAME . ACTION_NAME);
//判断是否超级管理员,是无需进行权限认证
$ADMIN_AUTH_KEY = session(C('ADMIN_AUTH_KEY'));
if (empty($ADMIN_AUTH_KEY)) {
//认证类型 1 登录认证 2 实时认证
if (C('USER_AUTH_TYPE') == 2) {
//加强验证和即时验证模式 更加安全 后台权限修改可以即时生效
//通过数据库进行访问检查
$accessList = RBAC::getAccessList(session(C('USER_AUTH_KEY')));
} else {
// 如果是管理员或者当前操作已经认证过,无需再次认证
if (session($accessGuid)) {
return true;
}
//登录验证模式,比较登录后保存的权限访问列表
$accessList = session("_ACCESS_LIST");
}
//判断是否为组件化模式,如果是,验证其全模块名
$module = defined('P_MODULE_NAME') ? P_MODULE_NAME : MODULE_NAME;
if (!isset($accessList[strtoupper($appName)][strtoupper($module)][strtoupper(ACTION_NAME)])) {
if (self::checkLogin() == true) {
if ($appName == "Admin" && in_array(MODULE_NAME, array("Index", "Main")) && in_array(ACTION_NAME, array("index"))) {
session($accessGuid, true);
return true;
}
//如果是public_开头的验证通过。
if (substr(ACTION_NAME, 0, 7) == 'public_') {
session($accessGuid, true);
return true;
}
//如果是内容模块,直接验证通过,交给内容模块自己控制权限
if ("Contents" == $appName && "Content" == MODULE_NAME) {
session($accessGuid, true);
return true;
}
}
session($accessGuid, false);
return false;
} else {
session($accessGuid, true);
}
} else {
//进行登陆检测
if (self::checkLogin()) {
return true;
}
return false;
}
}
return true;
}
示例10: AccessDecision
public static function AccessDecision($appName = APP_NAME)
{
//检查是否需要认证
if (RBAC::checkAccess()) {
//存在认证识别号,则进行进一步的访问决策
$accessGuid = md5($appName . MODULE_NAME . ACTION_NAME);
if (empty($_SESSION[C('ADMIN_AUTH_KEY')])) {
if (C('USER_AUTH_TYPE') == 2) {
//加强验证和即时验证模式 更加安全 后台权限修改可以即时生效
//通过数据库进行访问检查
$accessList = RBAC::getAccessList($_SESSION[C('USER_AUTH_KEY')]);
} else {
// 如果是管理员或者当前操作已经认证过,无需再次认证
//if( $_SESSION[$accessGuid]) {by wangcheng
if ($_SESSION[strtolower(MODULE_NAME . '_' . ACTION_NAME)]) {
return true;
}
//登录验证模式,比较登录后保存的权限访问列表
//$accessList = $_SESSION['_ACCESS_LIST'];
$file = DConfig_PATH . "/AccessList/access_" . $_SESSION[C('USER_AUTH_KEY')] . ".php";
if (!file_exists($file)) {
if (null === $authId) {
$authId = $_SESSION[C('USER_AUTH_KEY')];
}
$accessList = RBAC::getAccessList($authId);
if (!file_exists(DConfig_PATH . "/AccessList")) {
createFolder(dirname(DConfig_PATH . "/AccessList"));
mkdir(DConfig_PATH . "/AccessList", 0777);
}
RBAC::writeover($file, "return " . RBAC::pw_var_export($accessList) . ";\n", true);
if (!C("_access_list")) {
foreach ($accessList as $k3 => $v3) {
foreach ($accessList[$k3] as $k1 => $v1) {
foreach ($accessList[$k3][$k1] as $k => $v) {
$p = explode("-", $v);
if ($p[1] != 5) {
//过滤禁止权限
$_SESSION[strtolower($k1 . '_' . $k)] = $p[1];
}
}
}
}
C("_access_list", true);
}
} else {
$accessList = (require $file);
if (!C("_access_list")) {
foreach ($accessList as $k3 => $v3) {
foreach ($accessList[$k3] as $k1 => $v1) {
foreach ($accessList[$k3][$k1] as $k => $v) {
$p = explode("-", $v);
if ($p[1] != 5) {
//过滤禁止权限
$_SESSION[strtolower($k1 . '_' . $k)] = $p[1];
}
}
}
}
C("_access_list", true);
}
}
}
//判断是否为组件化模式,如果是,验证其全模块名
$module = defined('P_MODULE_NAME') ? P_MODULE_NAME : MODULE_NAME;
if (!isset($accessList[strtoupper($appName)][strtoupper($module)][strtoupper(ACTION_NAME)])) {
$n = substr(ACTION_NAME, 0, 6) == "lookup" ? 1 : 0;
$n2 = substr(ACTION_NAME, 0, 6) == "combox" ? 1 : 0;
$n3 = substr($module, 0, 7) == "MisAuto" ? 1 : 0;
if ($n || $n2 || $n3) {
$_SESSION[strtolower(MODULE_NAME . '_' . ACTION_NAME)] = true;
} else {
$_SESSION[strtolower(MODULE_NAME . '_' . ACTION_NAME)] = false;
return false;
}
} else {
$p = explode("-", $accessList[strtoupper($appName)][strtoupper($module)][strtoupper(ACTION_NAME)]);
if ($p[1] != 5) {
//过滤禁止权限
$_SESSION[strtolower(MODULE_NAME . '_' . ACTION_NAME)] = $p[1];
} else {
return false;
}
}
} else {
//管理员无需认证
$_SESSION['a'] = true;
return true;
}
}
return true;
}