这些需求laravel 都帮你考虑到了!
在conf/auth.php 中guard 可以配置 用户和使用调用中间件(middleware)模式
极坐标方程它解决了,不同客户在不同环境下(api,web,admin) 使用不同用户角色(前端用户,后端用户)权限认证需求
[ 'guards' => [ 'web' => [ //表示使用web中间件下 使用“ssion 驱动” 驱动位置:vendor\laravel\framework\src\illuminate\auth\ssionguard.php //用户为urs --具体定义urs模型 在provider中定义 亚丁湾在哪里 'driver' => 'ssion', 'provider' => 'urs', ], 'api' => [ //表示使用api中间件下 使用“token 驱动” //用户为urs --具体定义urs模型 在provider中定义
//注意api 没有默认配置 authenticate 中间件-------需要自己手动在 app/http/kernel.php 中添加 'driver' => 'token', 'provider' => 'urs', 'hash' => fal, ], 'admin' => [ //表示使用admin中间件下 使用“ssion 驱动” //用户为urs --具体定义urs模型 在provider中定义 'driver' => 'ssion', 'provider' => 'admin', ], ]]
顺便讲下用户的数据提供者,它只是定义用户类型,还有指定对应的用户模型
[ 'providers' => [ //表示urs 用户 使用app\ur::class模型作为用户模型 'urs' => [ 'driver' => 'eloquent', 'model' => app\ur::class, ], //当然还可以配置其他用户,比如admin 后台用户 'admin' => [ 'driver' => 'eloquent', 'model' => app\admin::class, ], ]]
auth::guard('web')->ur()
auth::ur();
注:默认配置在 config/auth.php
'defaults' => [ 'guard' => 'web', 'passwords' => 'urs',]
如果是上面的配置,那auth::ur() 就相当于 auth::guard(‘web’)->ur();
中间件默认在 app\http\kernel.php 中注册 有以下数组(规则):
注册在 $middleware 数组中的中间件 所有路由每次都会调用
protected $middleware = [ \app\http\middleware\trustproxies::class, \fruitcake\cors\handlecors::class, \app\http\middleware\checkformaintenancemode::class, \illuminate\foundation\http\middleware\validatepostsize::class, \app\http\middleware\trimstrings::class, \illuminate\foundation\http\middleware\convertemptystringstonull::class,];
注册在 $middlewaregroups数组中的中间件是路由组,一次调用别名其中的中间件都会调用(打包调用)
protected $middlewaregroups = [ 'web' => [ \app\http\middleware\encryptcookies::class, \illuminate\cookie\middleware\addqueuedcookiestorespon::class, \i甘南旅游注意事项lluminate\ssion\middleware\startssion::class, // \illuminate\ssion\middleware\authenticatession::class, \illuminate\view\middleware\sha第一节课reerrorsfromssion::class, \app\http\middleware\verifycsrftoken::class, \illuminate\routing\middleware\substitutebindings::class, ], 'api' => [ 'throttle:60,1', \illuminate\routing\middleware\substitutebindings::class, ],];
注册在$routemiddleware 数组可以单独使用,也可以配合middlewaregroups 一起使用
protected $routemiddleware = [ 'auth' => \app\http\middleware\authenticate::class, 'auth.basic' => \illuminate\auth\middleware\authenticatewithbasicauth::class, 'bindings' => \illuminate\routing\middleware\substitutebindings::class, 'cache.headers' => \illuminate\http\middleware\tcacheheaders::class, 'can' => \illuminate\auth\middleware\authorize::class, 外国语 'guest' => \app\http\middleware\redirectifauthenticated::class, 'password.confirm' => \illuminate\auth\middleware\requirepassword::class, 'signed' => \illuminate\routing\middleware\validatesignature::class, 'throttle' => \illuminate\routing\middleware\throttlerequests::class, 'verified' => \illuminate\auth\middleware\ensureemailisverified::class,];
//通过auth中间件使用其中的 ”admin guard”验证中间件 route::middleware('auth:admin')->get('/', function () { return view('welcome');});
说明:auth:admin
auth 中间件/其中的冒号代表传参,参数为 admin 就是在guard 中注册的 admin 如下:
[ 'admin' => [ //表示使用admin中间件下 使用“ssion 驱动” //用户为urs --具体定义urs模型 在provider中定义 'driver' => 'ssion', 'provider' => 'admin', ]]
这个auth:admin代表:
我这个路由需要进行用户认证:认证是否为 admin 用户,根据admin 守卫(guard)的配置,将会调用ssion模块验证用户
laravel 权限认证,全部在authenticate 中间件完成,默认文件在\app\http\middleware\authenticate.php
通过kernel (注册于app\http\kernel.php)注入到中间件模块中
它通过guard 模块来实现认证,guard在上面所说的config\auth.php 中注册
在authenticate 中使用了 guard 模块来验证用户是否登录:
以下代码片段位于:illuminate\auth\middleware\authenticate
class authenticate implements authenticatesrequests{ /** * the authentication factory instance. * * @var \illuminate\contracts\auth\factory */ protected $auth; /** * create a new middleware instance. * * @param \illuminate\contracts\auth\factory $auth * @return void */ public function __construct(auth $auth) { $this->auth = $auth; } //...}
当路由组件使用了“auth” 也就是 \app\http\middleware\authenticate::class 中间件时就会触发权限认证
之后的具体操作就有中间件来完成了,比如发现未登录就跳转到登录页
在 app/http/kernel.php 中修改api 中间件的使用,因为默认admin guard 使用的ssion 驱动,所有需要打开 token,ssion 中间件的支持
protected $middlewaregroups = [ 'web' => [ \app\http\middleware\encryptcookies::class,//启用token 中间件 \illuminate\cookie\middleware\addqueuedcookiestorespon::class, \illuminate\ssion\middleware\startssion::class,//启用ssion 中间件 // \illuminate\ssion\middleware\authenticatession::class, \illuminate\view\middleware\shareerrorsfromssion::class, \app\http\middleware\verifycsrftoken::class,//验证csrf 中间件 \illuminate\routing\middleware\substitutebindings::class, ], 'api' => [ \app\http\middleware\encryptcookies::class,//新增的 启用token \illuminate\ssion\middleware\startssion::class,//新增的 启用ssion 中间件 \app\http\middleware\verifycsrftoken::class,//新增的 启用csrf 中间件 'throttle:60,1', \illuminate\routing\middleware\substitutebindings::class, ],];
在路由界面添加需要的路由并在中间件中加上:”admin.auth” 表示使用 admin 权限验证 就ok了
route::middleware('admin.auth')->get('/company', function (request $request) { return company::lect(['id',"name as text"])->get();});
以上均为个人总结,参考网上教程和laravel 相关源码,如有错误和理解问题,欢迎大佬们指正!
原文链接:
本文发布于:2023-04-08 09:33:40,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/49923efbc2b6eb820a05db91e4cfcc29.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:Laravel admin 调用api时验证用户,Laravel guard 正确使用姿势.doc
本文 PDF 下载地址:Laravel admin 调用api时验证用户,Laravel guard 正确使用姿势.pdf
留言与评论(共有 0 条评论) |