码迷,mamicode.com
首页 > 系统相关 > 详细

1邮件 2队列 3redis 4cache 5基础控制器 6定时任务 7policy

时间:2017-12-26 00:57:11      阅读:330      评论:0      收藏:0      [点我收藏+]

标签:映射   get   名称   form   www.   位置   控制   需要   异常   

smtp.163.com

25

18552368312@163.com

gujinrong1234

 

 

1邮件

2队列

3redis   

4cache

5基础控制器

6定时任务

7policy

https://www.lijinma.com/blog/2016/12/14/laravel-policy/

http://laravelacademy.org/post/6823.html

 

 

 

1

$doc =sotrge_path(‘app/aa.doc’);位置在sotrge/app/aa.doc

$url = ‘’

$img = Sotrage::get(‘1.jpg’)  //位置在sotrge/app/1.jpg

Mail::send(‘welcome’,[‘aa’=>$aa],function($message){

$message->form(‘1023352351@qq.com’,’gu’)->to(‘18552368312’)->subject(‘主题’)

$message->attach($doc,[‘as’=>’附件.doc’]);

 

})

 

在视图里面

<img src =“{{$message->embed($url)}}”>

<img  src =“{{$message->embedData($img,111.jpg)}}”>

MAIL_DRIVER=smtp

MAIL_HOST=smtp.163.com

MAIL_PORT=25

MAIL_USERNAME=18552368312@163.com

MAIL_PASSWORD=gujinrong1234

MAIL_ENCRYPTION=null

 

 

 

Choore Application

2

Cache::put(1,2,11);

echo Cache::get(1);

Cache::forget()

Cache::has()

 

 

 

 

Session::put(‘s1‘,11);

echo Session::get(‘s11‘,11);

//检测是否存在key

Session::has(‘users‘);

//删除key

Session::forget(‘key‘);

 

 

//保存key,value

Session::flash(‘key‘, ‘value‘);

//取值方法还是一样的

Session::get(‘key‘);

 

Session::all()

 

Cookie

 

return response(‘欢迎来到 Laravel 学院‘)->cookie(

    ‘name‘, ‘学院君‘, $minutes, $path, $domain, $secure, $httpOnly

);

 

如果你想要生成一个 Symfony\Component\HttpFoundation\Cookie 实例以便后续添加到响应实例,可以使用全局辅助函数 cookie,该 Cookie 只有在添加到响应实例上才会发送到客户端:

$cookie =Cookie::make(‘name1‘,‘gujinrong‘,11);

$cookie = cookie(‘name‘, ‘学院君‘, $minutes);

return response(‘欢迎来到 Laravel 学院‘)->cookie($cookie);

 

 

为了安全起见,Laravel 框架创建的所有 Cookie 都经过加密并使用一个认证码进行签名

$value = $request->cookie(‘name‘);  //

echoCookie::get(‘name1‘);

 

 

 

 

 

权限Gates

1

Gates 是一个用于判断用户是否有权进行某项操作的闭包,通常使用Gate 门面定义在 App\Providers\AuthServiceProvider类中

public function boot()

{

    $this->registerPolicies();

 

    Gate::define(‘update-post‘, function ($user, $post) {

        return $user->id == $post->user_id;

    });

}

 

if (Gate::allows(‘update-post‘, $post)) {

    // 当前用户可以更新文章...

}

 

if (Gate::denies(‘update-post‘, $post)) {

    // 当前用户不能更新文章...

}

 

如果你想要判断指定用户(非当前用户)是否有权进行某项操作,可以使用 Gate 门面上的 forUser 方法:

if (Gate::forUser($user)->allows(‘update-post‘, $post)) {

    // 当前用户可以更新文章...

}

 

if (Gate::forUser($user)->denies(‘update-post‘, $post)) {

    // 当前用户不能更新文章...

}

权限2

Policies(策略)是用于组织基于特定模型或资源的授权逻辑的类,例如,如果你开发的是一个博客应用,可以有一个 Post 模型和与之对应的 PostPolicy 来授权用户创建或更新博客的动作。

 

步骤1

php artisan make:policy DocPolicy

Php artisan make:policy DocPolicy  -m Docs

步骤2

注册策略类

Laravel 自带的AuthServiceProvider 包含了一个 policies 属性来映射Eloquent 模型及与之对应的策略类。注册策略将会告知 Laravel 在授权给定模型动作时使用哪一个策略类

 

protected $policies = [

      ‘App\Model‘ => ‘App\Policies\ModelPolicy‘,

Docs::class=>DocPolicy::class

  ];

步骤3

 

 public function update(User $user, Post $post)

    {

        return $user->id === $post->user_id;

    }

 

public function delete(User $user, Docs $docs)

{

    //

}

public function create(User $user)

{

    //

}

 

public function view(User $user, Docs $docs)

{

    //

}

特殊

策略过滤器

对特定用户,你可能想要在一个策略方法中对其授权所有权限,比如后台管理员。要实现这个功能,需要在策略类中定义一个 before 方法,before 方法会在策略类的所有其他方法执行前执行,从而确保在其他策略方法调用前执行其中的逻辑:

public function before($user, $ability)

{

    if ($user->isSuperAdmin()) {

        return true;

    }

}

如果你想要禁止所有授权,可以在 before 方法中返回 false。如果返回 null,该授权会落入策略方法。

步骤4使用1

Laravel 自带的 User 模型提供了两个方法用于授权动作:can 和 cant。can 方法接收你想要授权的动作和对应的模型作为参数。例如,下面的例子我们判断用户是否被授权更新给定的 Post 模型

if ($user->can(‘update‘, $post)) {

    //

}

如果给定模型对应的策略已经注册,则 can 方法会自动调用相应的策略并返回布尔结果。如果给定模型没有任何策略被注册,can 方法将会尝试调用与动作名称相匹配的Gate闭包。

 

create不需要传$post,传Post::class就可以了

 

有些动作比如 create 并不需要依赖给定模型实例,在这些场景中,可以传递一个类名到 can 方法,这个类名会在进行授权的时候用于判断使用哪一个策略:

use App\Post;

 

if ($user->can(‘create‘, Post::class)) {

    // Executes the "create" method on the relevant policy...

}

使用2

通过控制器辅助函数

除了提供给 User 模型的辅助函数,Laravel 还为继承自 App\Http\Controllers\Controller 基类的所有控制器提供了 authorize 方法,和can 方法类似,该方法接收你想要授权的动作名称以及相应模型实例作为参数,如果动作没有被授权, authorize 方法将会抛出 Illuminate\Auth\Access\AuthorizationException ,Laravel 默认异常处理器将会将其转化为状态码为 403 的 HTTP 响应:

public function update(Request $request, Post $post)

    {

        $this->authorize(‘update‘, $post);

 

        // The current user can update the blog post...

    }

public function create(Request $request)

{

    $this->authorize(‘create‘, Post::class);

 

    // The current user can create blog posts...

}

使用3blade模板里面

通过Blade模板

编写 Blade 模板的时候,你可能想要在用户被授权特定动作的情况下才显示对应的视图模板部分,例如,你可能想要在用户被授权更新权限的情况下才显示更新表单。在这种情况下,你可以使用 @can 和 @cannot 指令:

@can(‘update‘, $post)

    <!-- 当前用户可以更新文章 -->

@elsecan(‘create‘, $post)

    <!-- 当前用户可以创建新文章 -->

@endcan

 

@cannot(‘update‘, $post)

    <!-- 当前用户不能更新文章 -->

@elsecannot(‘create‘, $post)

    <!-- 当前用户不能创建新文章 -->

@endcannot

 

 

这种写法可看作是 @if @unless 语句的缩写,上面的 @can  @cannot 语句与下面的语句等价:

@if (Auth::user()->can(‘update‘, $post))

    <!-- 当前用户可以更新文章 -->

@endif

 

@unless (Auth::user()->can(‘update‘, $post))

    <!-- 当前用户不能更新文章 -->

@endunless

不依赖模型的动作

和其它授权方法一样,如果授权动作不需要传入模型实例的情况下可以传递类名给 @can  @cannot 指令:

@can(‘create‘, Post::class)

    <!-- 当前用户可以创建文章 -->

@endcan

 

@cannot(‘create‘, Post::class)

    <!-- 当前用户不能创建文章 -->

@endcannot

 

1邮件 2队列 3redis 4cache 5基础控制器 6定时任务 7policy

标签:映射   get   名称   form   www.   位置   控制   需要   异常   

原文地址:https://www.cnblogs.com/keiweila/p/8111768.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!