Laravel 授权策略提供的 @can Blade 命令?
blade模板语法 can 问题
使用方法是
can(还是个用户 尴尬就不写@了)
Html 代码
@endcan
使用 can 存在什么先决条件 update 对应的是策略里面的 update 的方法 还是 控制器里面的
对应的里面的update 的方法
public function update(TopicRequest $request, Topic $topic)
{
$this->authorize('update', $topic); //或者说是不是这个语句的另一种在页面的显示方式
$topic->update($request->all());
return redirect()->route('topics.show', $topic->id)->with('success', '更新帖子成功');
}
或者说can是一个什么样的机制? 怎么样做到判断的 ? 请各位大神指教下 谢谢!
首先第一个问题 :
can()
方法其实是如下代码写法的缩写:也就是说会默认的调用当前登录用户的
can()
辅助方法。第二个问题:
can()
方法会根据第二个参数的模型的类型去授权策略注册表里面去查找该模型对应的授权策略类,也就是你在AuthServiceProvider
的policies
属性指定的模型以及授权策略类对应关系:所以回到问题上来,因为你传入的
$topic
是Topic
模型,那么can()
方法就会去AuthServiceProvider
里面你指定的Topic
模型对应的授权策略类里面去寻找叫update
的方法。推荐自己仔细看一下文档 编写策略