问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

在ThinkPHP中使用session_id($id)时程序就卡死了

发布网友 发布时间:2022-04-28 15:37

我来回答

3个回答

懂视网 时间:2022-04-28 19:58

PHP-Casbin 是一个强大的、高效的开源访问控制框架,它支持基于各种访问控制模型的权限管理。

Think-Casbin 是一个专为ThinkPHP5.1定制的Casbin的扩展包,使开发者更便捷的在thinkphp项目中使用Casbin。

安装

创建thinkphp项目(如果没有):

composer create-project topthink/think=5.1.* tp5

在ThinkPHP项目里,安装Think-Casbin扩展:

composer require casbin/think-adapter

发布资源:

php think casbin:publish

这将自动创建model配置文件config/casbin-basic-model.conf,和Casbin的配置文件config/casbin.php。

数据迁移:

由于Think-Casbin默认将Casbin的策略(Policy)存储在数据库中,所以需要初始化数据库表信息。

执行前,请确保数据库连接信息配置正确,如需单独修改Casbin的数据库连接信息或表名,可以修改config/casbin.php里的配置。

php think casbin:migrate

这将会自动创建Casbin的策略(Policy)表casbin_rule。

中间件

ThinkPHP 从 5.1.6+ 版本开始,正式引入中间件的支持。

可以通过命令行指令快速生成中间件

php think make:middleware Authorization

这个指令会 application/http/middleware 目录下面生成一个 Authorization 中间件。

在中间件中,获取当前用户名、URI、请求方法,通过 Casbin 验证权限:

<?php

namespace apphttpmiddleware;

use Casbin;
use thinkfacadeSession;

class Authorization
{
 public function handle($request, Closure $next)
 {
 // 当前登录用户名,这里以session为例
 // $user = Session::get('user_name') ?: 'test_user';
 $user = Session::get('user_name');

 $url = $request->url();
 $action = $request->method();

 if (!$user){
  return response()->data('Unauthenticated.')->code(401);
 }

 if (!Casbin::enforce($user, $url, $action)) {
  return response()->data('Unauthorized.')->code(403);
 }

 return $next($request);
 }
}

Casbin Model配置

configcasbin-basic-model.conf 配置文件:

[request_definition]
r = sub, obj, act

[policy_definition]
p = sub, obj, act

[policy_effect]
e = some(where (p.eft == allow))

[matchers]
m = r.sub == p.sub && keyMatch2(r.obj, p.obj) && r.act == p.act

验证

在执行授权之前,先在数据库 casbin_rule 表中添加一些默认的策略:

1.jpg

添加路由及其中间件:

Route::group('users', function () {
 
 Route::get('', function () {
 return 'Users data.';
 });

 Route::get('/:id', function ($id) {
 return 'User: '.$id;
 });

})->middleware(apphttpmiddlewareAuthorization::class);

先登录用户保存用户名到 SESSION ,可以访问 /users、/users/1 验证一下权限。

推荐教程:《TP5》

热心网友 时间:2022-04-28 17:06

本来session_id()是取得或者重新配置目前存放 Session 的代号的一个函数,首先确认你是否需要给他重新赋值
$id是一个变量,他是否已经赋值?
先使用 mp($_SESSION)来打印一下你的SESSION
如果只是想给某个session值赋值,thinkphp中直接$_SESSION['id']=***

热心网友 时间:2022-04-28 18:24

ThinkPHP已经自己注册了一次session_id($id)吧,ar_mp(session_id());看看有输出么。

怎么卡死的?总要有个错误提示吧。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
怎么在wps上给一个圆形加上箭头,或者怎么画一个出来? 四柱常用术语解释 北京西山燕庐家园什么情况? 盛通绿色家园是什么 微信公积金提前多久到 微信公积金多久到账 微信提取公积金要多久 微信提取公积金多久 公积金微信提取要多久 微信提取公积金多久到 华为荣耀8怎么截图/截屏 ,荣耀8三种截屏方法分别是怎样的? 荣耀8相册照片怎么拼图,就是几张照片拼一起 荣耀8青春版的怎么滚动截屏? 荣耀畅玩8a怎么拼图? 华为荣耀8手机的截屏有没有快捷键?如何使用长截屏功能? 荣耀8青春版截图怎么截长屏? 华为荣耀8a怎么解长图? 求指导华为荣耀8手机怎么截长图? 万年历查询搬家吉日 中华万年历查看7月份搬家黄道吉日 小米手机自动关机开不开机怎么办 万年历吉日查询 搬家 搬家怎么查好日子? 小米k30手机升级之后忽然关机了然后一直打不开我的红米K30,自从升级系统后,它就老是自动关机,然_百度问一问 搬家日子怎么选家吉日 为什么小米手机自动关机后无法开机? 搬家吉日怎么选 小米手机,没电自动关机没法开机了,怎么办? 如何看入宅搬家吉日 万年历搬家吉日查询 电脑键盘太多不认识了,能教教我吗? 我的电脑老是找不到键盘怎么办 我想知道怎么才能才能快速熟悉电脑键盘打字实在是太慢了 我对电脑键盘不熟悉,打字比较慢,还要看着键盘打,有什么方法能让我尽快记住,不用看着键盘就能打字的。 电脑键盘怎么都记不住,怎么办呢 原画师的就业前景? 游戏原画设计师的就业状况如何? 目前南平首套商品房房贷利率是多少?是否有折扣? 游戏原画前景好吗 关于游戏原画设计,主要做什么工作?就业前景和薪水怎么样?有哪些培训学校在游戏原画培训上比较专业呢? 利率是多少,首套房 最近大家都在说原画,我也想了解一下,毕业之后多个就业方向,那学原画以后能干什么?到底要学些什么东西? 2018哈尔滨双城区首套房贷款利率 是多少 游戏原画行业现在的就业前景? 请问2018年首套房子按揭利息,中行 小米蓝牙耳机怎么用 小米蓝牙耳机与手机 我想考电子商务师,这个证的含金量怎么样啊? 小米蓝牙耳机怎么配对手机 电子商务师三级有用吗? 怎么连蓝牙耳机 小米