代码如下
public function _initialize() {
quick_login();
$this->ErrorJumpUrl = U("Home/Index/index");
}
复制代码
在这个构造函数中 有一个 quick_login();方法 是判断用户是否登录的!
但在这个类中的某个方法中 不要执行这个方法 请问怎么办?
就是在大多数方法下需要执行,但某个方法下面不需要它自动执行时怎么办?
代码如下
public function _initialize() {
quick_login();
$this->ErrorJumpUrl = U("Home/Index/index");
}
复制代码
在这个构造函数中 有一个 quick_login();方法 是判断用户是否登录的!
但在这个类中的某个方法中 不要执行这个方法 请问怎么办?
就是在大多数方法下需要执行,但某个方法下面不需要它自动执行时怎么办?
遇到过差不多的,但是判断是写成中间件的。
class Order extends \app\admin\controller\Base
{
protected $middleware = ['AdminCheck'];
// 加载订单首页
public function index()
{
return $this->fetch();
}
//获取订单
public function getOrder(Request $request)
{
return "123"
}
}
protected $middleware = ['AdminCheck'];这个中间件用来判断是不是管理员,默认在class里调用了,导致这个类下所有方法都会验证管理员,这种只需要改一下调用中间件的部分就行。
改成
protected $middleware = [
'AdminCheck' => ['except' => ['getOrder']]
];
在中间件后面增加了限定参数。改了后getOrder方法就不验证管理员了。
具体有哪些可以参考下面;做个记录,解决了一个需求;
// auth中间件,使用了except,表示出了hello方法外,这个控制器其他的方法都会执行这个中间件
// check中间件,使用了only表示只有这个控制器的login方法执行这个中间件
// log中间件,没有使用任何限定参数,表示这个控制器里面所有的方法都会执行log这个中间件
protected $middleware = [
'auth' => ['except' => ['hello']],
'check' => ['only' => 'login'],
'log'
];
2 回答1.5k 阅读✓ 已解决
1 回答1.3k 阅读✓ 已解决
2 回答932 阅读✓ 已解决
1 回答1.1k 阅读✓ 已解决
2 回答994 阅读
1 回答964 阅读
1 回答887 阅读
这种 需求 就是要用到 行为类(钩子),不能用这样的 构造函数,