我想有管理员授权。所以我在中间件有了新的类
class Admin {
public function handle($request, Closure $next)
{
if ( Auth::check() && Auth::user()->isAdmin() )
{
return $next($request);
}
Session::flash('message', 'You need to be an administrator to visit this page.');
return redirect('/');
}
}
然后注册在Kernel.php通过添加
protected $routeMiddleware = [
'auth' => \App\Http\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'admin' => \App\Http\Middleware\Admin::class, //added line
];
我还在用户模型中定义了isAdmin()。当我在路线中执行此操作时,它会起作用:
get('protected', ['middleware' => ['auth', 'admin'], function() {
return "this page requires that you be logged in and an Admin";
}]);
但是我想像Auth::admin()一样使用它作为Auth::guest(),我应该在哪里实现这个函数?我需要先在Guard.php中使用抽象admin()吗?
我可以与Auth::用户()-
谢谢。
谢谢。
首先,您不需要在路由中同时包含身份验证和管理中间件,因为您已经在管理中间件中检查了身份验证。
get('protected', ['middleware' => ['admin'], function() {
return "this page requires that you be logged in and an Admin";
}]);
对于您的问题,首先,您需要扩展\illumb\Auth\Guard
,并使用它。假设你的应用程序文件夹中有一个扩展文件夹。
namespace App\Extensions;
use Illuminate\Auth\Guard;
class CustomGuard extends Guard
{
public function admin()
{
if ($this->user()->isAdmin()) {
return true;
}
return false;
}
}
然后在你的AppService提供商中,
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use Illuminate\Auth\EloquentUserProvider;
use App\Extensions\CustomGuard;
class AppServiceProvider extends ServiceProvider
{
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
Auth::extend('eloquent.admin', function ($app) {
$model = $app['config']['auth.model'];
$provider = new EloquentUserProvider($app['hash'], $model);
return new CustomGuard($provider, \App::make('session.store'));
});
}
/**
* Register any application services.
*
* @return void
*/
public function register()
{
//
}
}
最后,在config/auth.php
文件中,按如下所示更改行。
'driver' => 'eloquent.admin'
那你应该没事了。
AUTH password 通过设置配置文件中 requirepass 项的值(使用命令 CONFIG SET requirepass password ),可以使用密码来保护 Redis 服务器。 如果开启了密码保护的话,在每次连接 Redis 服务器之后,就要使用 AUTH 命令解锁,解锁之后才能使用其他 Redis 命令。 如果 AUTH 命令给定的密码 password 和配置文件中的密码
用户认证 // 判断当前用户是否已认证(是否已登录) Auth::check(); // 获取当前的认证用户 Auth::user(); // 获取当前的认证用户的 ID(未登录情况下会报错) Auth::id(); // 通过给定的信息来尝试对用户进行认证(成功后会自动启动会话) Auth::attempt(['email' => $email, 'password' => $password]
修改请求头的authorization字段,这个字段是网页401弹出的输入框中输入用户名和密码的Base64编码,配置方式: pattern auth://username:password # 或者采用json格式 pattern auth://filepath filepath为Values里面的{key}或者本地文件(如:e:\test\xxx、e:/test/xxx、/User/use
很好的一天。我正在尝试使用laravel。但我有点困惑。 我已经登录并注册。 这是我的登录过程 我正在使用作为我的表,所以我更改了这个 但是登录后出现的问题。我得到这个错误 传递给Illumb\Auth\EloquentUserProvider::validateCredentials()的参数1必须是Illumb\Contracts\Auth\Authenticatable的实例,给定的App\
Basicauth 中间件提供了Http Basic认证,是一个 Tango 的中间件。 安装 go get github.com/tango-contrib/basicauth 示例 type AuthAction struct {} func (a *AuthAction) Get() string { return "200" } func main() { tg := ta
通用授权 自动登录授权 开放平台授权