好得很程序员自学网
  • 首页
  • 后端语言
    • C#
    • PHP
    • Python
    • java
    • Golang
    • ASP.NET
  • 前端开发
    • Angular
    • react框架
    • LayUi开发
    • javascript
    • HTML与HTML5
    • CSS与CSS3
    • jQuery
    • Bootstrap
    • NodeJS
    • Vue与小程序技术
    • Photoshop
  • 数据库技术
    • MSSQL
    • MYSQL
    • Redis
    • MongoDB
    • Oracle
    • PostgreSQL
    • Sqlite
    • 数据库基础
    • 数据库排错
  • CMS系统
    • HDHCMS
    • WordPress
    • Dedecms
    • PhpCms
    • 帝国CMS
    • ThinkPHP
    • Discuz
    • ZBlog
    • ECSHOP
  • 高手进阶
    • Android技术
    • 正则表达式
    • 数据结构与算法
  • 系统运维
    • Windows
    • apache
    • 服务器排错
    • 网站安全
    • nginx
    • linux系统
    • MacOS
  • 学习教程
    • 前端脚本教程
    • HTML与CSS 教程
    • 脚本语言教程
    • 数据库教程
    • 应用系统教程
  • 新技术
  • 编程导航
    • 区块链
    • IT资讯
    • 设计灵感
    • 建站资源
    • 开发团队
    • 程序社区
    • 图标图库
    • 图形动效
    • IDE环境
    • 在线工具
    • 调试测试
    • Node开发
    • 游戏框架
    • CSS库
    • Jquery插件
    • Js插件
    • Web框架
    • 移动端框架
    • 模块管理
    • 开发社区
    • 在线课堂
    • 框架类库
    • 项目托管
    • 云服务

当前位置:首页>后端语言>PHP
<tfoot draggable='sEl'></tfoot>

php获取角色权限 php权限角色开发

很多站长朋友们都不太清楚php获取角色权限,今天小编就来给大家整理php获取角色权限,希望对各位有所帮助,具体内容如下:

本文目录一览: 1、 php MySQL 中 怎样让在一个表中的用户 获得权限呢? 2、 php权限管理如何实现 3、 php怎么获取钉钉员工授权信息? 4、 在php网站中用户权限 5、 php用户权限分配界面 php MySQL 中 怎样让在一个表中的用户 获得权限呢?

记得在mysql数据库中,都会自动有个 mysql 库,里面有个user表,是记录整个数据库用户及其权限的。你看看?

没怎么看懂你要表达的意思:是你要建一个普通表,这表里的用户根据字段标识获得操作整个数据库的权限?如果是这样,你要改mysql源码了。

php权限管理如何实现

可以使用acl控制实现,参考acl全集如下:

1、角色表

角色id - 用户组id - 特殊权限id(其中特殊权限 > 用户组所包含权限)

2、用户组表

用户组id - 用户组信息

3、权限表

权限表id - 权限信息 - 与功能模块的关系

4、用户组-权限关联表

用户组id - 权限集合

5、特殊权限表

特殊权限id - 权限集合

注意:

1、设置权限的删除、添加主要围绕在 用户组-权限关联表、特殊权限表。

2、用户的权限获取则是验证登陆的时候通过用户组和特殊权限获取权限集合。

3、展示的时候,根据2获取的权限集合从权限表获取所有功能模块的导航菜单。

php怎么获取钉钉员工授权信息?

做过一个E应用,使用lumen框架,和你的思路是一样的,新用户点进去就自动授权注册应用,数据存到我们自己的数据库中,不依赖钉钉,我们还同步了部门信息,如果粘贴复制和下面的那个同学一样,看上去你也会觉得懵,方法都是封装好了的。

建议你这样试试看:

 获取AccessToken:

后端通过corpid,corpsecret请求接口gettoken?corpid=idcorpsecret=secrect获取AccessToken

获取钉钉用户userid:

前端需要相应的处理,携带authCode请求,加上AccessToken这两个参数请求接口/user/getuserinfo?access_token=access_tokencode=authCode这个

获取钉钉用户详情:

使用access_token和上一步的钉钉userid 请求接口 /user/get?access_token=ACCESS_TOKENuserid=

插入钉钉用户的数据到你的 数据库中

我们这样做的:

/**

* 钉钉免登陆获获取用信息

* @param $authCode

* @param $url

* @return array

*/

static function outhLogin($authCode, $url)

{

if (empty($authCode) || empty($url)) {

return self::returnError('1101', self::$errorArray['1101']);

}

$accessToken = ComponentDingtalk::getPcAccessToken();

if ($accessToken['code']) {

self::logError(__CLASS__ . '->' . __FUNCTION__, '获取access_token失败');

return self::returnError('1102', self::$errorArray['1102']);

}

$dingUserId = ComponentDingtalk::getDingUserid($accessToken['data'], $authCode);

if ($dingUserId['code']) {

self::logError(__CLASS__ . '->' . __FUNCTION__, '用户userid获取失败(调用钉钉API)');

return self::returnError('1103', self::$errorArray['1103']);

}

$dinguserInfo = ComponentDingtalk::getDingUserInfo($accessToken['data'], $dingUserId['data']);

if ($dinguserInfo['code']) {

self::logError(__CLASS__ . '->' . __FUNCTION__, '用户信息获取失败(调用钉钉API)');

return self::returnError('1104', self::$errorArray['1004']);

}

$userInfo = $dinguserInfo['data'];

return self::transaction(function () use ($accessToken, $userInfo, $url) {

if (\count($userInfo['department']) > 1) {

$departIdArr = [];

$departNameArr = [];

for ($i = 0, $iMax = \count($userInfo['department']); $i < $iMax; $i++) {

$departInfo[$i] = ServerDepartment::getByDdDepartid($userInfo['department'][$i]);

$departIdArr[] = $departInfo[$i]['id'];

$departNameArr[] = $departInfo[$i]['name'];

}

$depart['id'] = implode(',', $departIdArr);

$depart['name'] = implode(',', $departNameArr);

} else {

$ddDepartmentId = implode(',', $userInfo['department']);

$depart = ServerDepartment::getByDdDepartid($ddDepartmentId);

}

//插入用户

$user = ServerEmployee::getByDdUserid($userInfo['userid']);

if ($user $user['status'] == 2) {

return self::returnError('1105', self::$errorArray['1105']);

}

if (empty($user)) {

$roleId = 0;

$departId = $depart['id'];

$name = $userInfo['name'];

$mobile = $userInfo['mobile'];

$departName = $depart['name'];

$position = $userInfo['position'];

$ddUserid = $userInfo['userid'];

$ddStatus = $userInfo['active'] ? 1 : 2;

$ddInfo = json_encode($userInfo, JSON_UNESCAPED_UNICODE);

$tokenOverAt = (int)(time() + $_ENV['PROJECT_apiAppTokenOverTime']);

$token = self::_createToken($userInfo['userid'], $tokenOverAt);

$status = 1;

$userId = ServerEmployee::insert($roleId, $departId, $name, $mobile, $departName, $position, $ddUserid, $ddStatus, $ddInfo, $token, $tokenOverAt, $status);

if (!$userId) {

self::logError(__CLASS__ . '->' . __FUNCTION__, '用户初始化创建失败');

return self::returnError('1106', self::$errorArray['1106']);

}

}

$userId = $userId ?? $user['id'];

// 更新Token

$id = $userId;

$roleId = $user['roleId'];

$departId = $depart['id'];

$name = $userInfo['name'];

$mobile = $userInfo['mobile'];

$departName = $depart['name'];

$position = $userInfo['position'];

$ddUserid = $userInfo['userid'];

$ddStatus = $userInfo['active'] ? 1 : 2;

$ddInfo = json_encode($userInfo, JSON_UNESCAPED_UNICODE);

$tokenOverAt = (int)(time() + $_ENV['PROJECT_apiAppTokenOverTime']);

$token = self::_createToken($userInfo['userid'], $tokenOverAt);

$status = 1;

$updateParams = ServerEmployee::update($id, $roleId, $departId, $name, $mobile, $departName, $position, $ddUserid, $ddStatus, $ddInfo, $token, $tokenOverAt, $status);

if (!$updateParams) {

self::logError(__CLASS__ . '->' . __FUNCTION__, '用户信息更新失败' . json_encode($updateParams, JSON_UNESCAPED_UNICODE) . '/' . json_encode([$id, $roleId, $departId, $name, $mobile, $depart, $position, $ddUserid, $ddStatus, $ddInfo, $token, $tokenOverAt, $status]));

return self::returnError('1107', self::$errorArray['1107']);

}

// 前端的配置信息

// 获取jsTicket

$jsTicket = ComponentDingtalk::getPcJsTicket($accessToken['data']);

if ($jsTicket['code']) {

self::logError(__CLASS__ . '->' . __FUNCTION__, '获取jsTicket失败(调用钉钉API)');

return self::returnError('1111', self::$errorArray['1111']);

}

// 组装签名数据

$curUrl = $url;;

$nonceStr = uniqid('', true);

$agentId = $_ENV['PROJECT_ddInterfaceAgentID'];

$timeStamp = time();

$corpId = $_ENV['PROJECT_ddInterfaceCorpId'];

$signature = ComponentDingtalk::getSign($jsTicket['data'], $nonceStr, $timeStamp, $curUrl);

$config = array(

'url' => urldecode($curUrl),

'nonceStr' => $nonceStr,

'agentId' => $agentId,

'timeStamp' => $timeStamp,

'corpId' => $corpId,

'signature' => $signature

);

// 获取当前角色的权限

$roleInfo = ServerRole::getById($roleId);

// 当前用户的顶级部门(不含根部门)

$departInfo = ServerDepartment::getById($departId);

if ($departInfo['parentid'] == 1) {  // 二级部门(总经办)

$departRootId = $departId;

$departRootName = $departName;

} else {

$sonDepart = ServerDepartment::getById($departInfo['parentid']);//分组

if ($sonDepart['parentid'] == 1) {

$departRootId = $sonDepart['id'];

$departRootName = $sonDepart['name'];

} else {

$grandsonDepart = ServerDepartment::getById($sonDepart['parentid']);//部门

if ($grandsonDepart['parentid'] == 1) {

$departRootId = $grandsonDepart['id'];

$departRootName = $grandsonDepart['name'];

} else {

$grandchildDepart = ServerDepartment::getById($grandsonDepart['parentid']);//分公司

$departRootId = $grandchildDepart['id'];

$departRootName = $grandchildDepart['name'];

}

}

}

$company = ServerDepartment::get(['parentid' => 0, 'dd_departid' => 1]);

return self::returnSuccess(array(

'id' => $userId,

'name' => $name,

'token' => $token,

'tokenOverAt' => $tokenOverAt,

'config' => $config,

'power' => $roleInfo['power'] ?? '',

'departId' => $departId,

'departName' => $departName,

'departRootId' => $departRootId,

'departRootName' => $departRootName,

'company' => $company['name'],

));

}, function (\Exception $e) {

echo $e->getMessage();

self::logError(__CLASS__ . '->' . __FUNCTION__, $e->getMessage());

return self::returnError('1108', self::$errorArray['1108']);

});

}

在php网站中用户权限

4个表

用户表(用户信息表)

权限表(设置可以访问的页面)

角色表(如果申请用户的时候有多项选择的时候添加,没有则不需要)

用户权限对应关系表(这个表是用于给每个用户赋权)

如果用户访问页面的时候,判断是否存在访问权限(查用户权限对应关系表),如果有正常访问,如果没有页面跳转。不过跳到登录页面感觉不太合理,你判断用户是否有权限的时候,他应该是登录状态,如果再跳到登录页面感觉不合理。

判断是否存在访问权限可以封装成公共类,每个页面初始化的时候都调用这个公共类。可以通过用户ID进行判断。

同是普通用户,那就加标识,判断的时候再判断一下标识,然后根据标识进行页面跳转。

以上,希望能帮到你。

php用户权限分配界面

说一下我的思路(RBAC 模式),供你参考,邮箱不发了,由于数据库需要保密,截图也不贴了。

你在左侧导航栏做三个菜单项,分别是:

1. 用户管理

2. 角色管理

3. 权限管理

其中 1 和 2 给管理员操作,管理员可以对其进行增删改查等操作;3 由软件开发者操作,不能分配给管理员;普通用户对 1、2、3 都无权操作。

权限管理界面,软件开发者可以对各种权限进行增删改查;

角色管理界面,管理员进去后可以对角色进行增册改查操作;具体可以这样安排界面,右栏主区分成上中下三块,上面这块提供添加及查询操作,中间块显示查询结果,下面这块查询结果中某条记录的明细。 增加按钮点击后,在明细区出现填写表单,具体需要填哪些内容由开发者定,一般角色名为必填项,然后同时在右边给出一个选择权限的列表,提供复选框让管理员为角色勾选分配权限;

用户管理界面跟角色界面类似,只是管理员在创建用户时是勾选角色而不是权限。

大体思路就是这样。

(PS: 数据库中当然要先设计好用户表、角色表、权限表、用户角色关联表、角色权限关联表等等)

关于php获取角色权限的介绍到此就结束了,不知道本篇文章是否对您有帮助呢?如果你还想了解更多此类信息,记得收藏关注本站,我们会不定期更新哦。

查看更多关于php获取角色权限 php权限角色开发的详细内容...

声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did210266
更新时间:2023-05-03   阅读:16次

上一篇: phpdom扩展安装 php安装扩展fileinfo

下一篇:如果结果不为空php 如果结果为错误值为空函数

相关资讯

最新资料更新

  • 1.破解php登录才能查看 破解php登录才能查看吗
  • 2.phpstorm写前端 phpstorm写html
  • 3.php队列和缓存 php中的九大缓存技术
  • 4.nginx隐藏.php nginx隐藏ip
  • 5.PHP添加日期代码 php年月日时间代码
  • 6.安卓phpapp 安卓php服务器
  • 7.hbuilder写php hbuilder写PHP
  • 8.php手机qr php手机编程软件
  • 9.php接收xml异常 php处理xml数据
  • 10.php图书管理系统 php图书管理系统全部代码
  • 11.php会员登录与注册 php 用户登录
  • 12.php截取汉子 php 截断
  • 13.phphtml补全 html自动补全代码
  • 14.php求100的质数 php求出1100的素数
  • 15.php分页页数太多 在php中如何对多条记录进行分页
  • 16.php每天更新数据 php数据库更新语句
  • 17.php数字语音播报 php语音转文字
  • 18.php推荐接口排重 接口 php
  • 19.phpcurl带证书 php证书查询系统
  • 20.php的token请求 php简单的token验证

CopyRight:2016-2025好得很程序员自学网 备案ICP:湘ICP备09009000号-16 http://haodehen.cn
本站资讯不构成任何建议,仅限于个人分享,参考须谨慎!
本网站对有关资料所引致的错误、不确或遗漏,概不负任何法律责任。
本网站刊载的所有内容(包括但不仅限文字、图片、LOGO、音频、视频、软件、程序等)版权归原作者所有。任何单位或个人认为本网站中的内容可能涉嫌侵犯其知识产权或存在不实内容时,请及时通知本站,予以删除。

网站内容来源于网络分享,如有侵权发邮箱到:kenbest@126.com,收到邮件我们会即时下线处理。
网站框架支持:HDHCMS   51LA统计 百度统计
Copyright © 2018-2025 「好得很程序员自学网」
[ SiteMap ]