rydurham / sentinel
Sentry User Manager for Laravel的实现。
Requires
- php: ^8
- ext-bcmath: *
- cartalyst/sentry: ^2.0
- illuminate/contracts: ^9.0
- illuminate/support: ^9.0
- vinkla/hashids: ^10.0
Requires (Dev)
- mockery/mockery: ^1.0
- orchestra/testbench: ^7.0
- phpunit/phpunit: ^9.5.10
- dev-dev
- v6.0.0
- v5.0.0
- v4.0.01
- v4.0.0
- v3.0.0
- 2.x-dev
- v2.10.0
- v2.9.1
- v2.9.0
- v2.8.1
- v2.8.0
- v2.7.0
- v2.6.2
- v2.6.1
- v2.6.0
- v2.5.0
- v2.4.1
- v2.4.0
- v2.3.5
- v2.3.4
- v2.3.3
- v2.3.2
- v2.3.1
- v2.3.0
- v2.2.7
- v2.2.6
- v2.2.5
- v2.2.4
- v2.2.3
- v2.2.2
- v2.2.1
- v2.2.0
- v2.1.7
- v2.1.6
- v2.1.5
- v2.1.4
- v2.1.3
- v2.1.2
- v2.1.1
- v2.1.0
- v2.0.1
- v2.0.0
- v2.0.0a6
- v2.0.0a5
- v2.0.0a4
- v2.0.0a3
- v2.0.0a2
- v2.0.0a1
- v1.5.0
- v1.4.27
- v1.4.26
- v1.4.25
- v1.4.24
- v1.4.23
- v1.4.22
- v1.4.21
- v1.4.20
- v1.4.19
- v1.4.18
- v1.4.17
- v1.4.16
- v1.4.14
- v1.4.13
- v1.4.12
- v1.4.11
- v1.4.10
- v1.4.9
- v1.4.8
- v1.4.7
- v1.4.6
- v1.4.5
- v1.4.4
- v1.4.3
- v1.4.2
- v1.4.1
- v1.4
- v1.3.1
- v1.3
- v1.2.1
- v1.2.0
- v1.1.1
- v1.1.0
- v1.0.0
- dev-master
- dev-set_minimum_php_version_to_7.2.5
- dev-laravel_7_upgrade
- dev-laravel_6.0_upgrade
This package is auto-updated.
Last update: 2024-09-09 10:08:56 UTC
README
本包为Laravel提供了Sentry 2的实现。默认使用Bootstrap 3.0,但你可以使用任何你想要的UI。它旨在以非常简单的方式快速实现用户访问控制。对于简单项目,你不需要做太多,只需将其放入并调整配置即可。
auth包cartalyst/sentry已被弃用。如果你在生产中使用它,应升级到cartalyst/sentinel。此包最终也将被弃用。如果你正在创建新应用,请不要使用此包。
重要有两个名为"Sentinel"的PHP包。这是rydurham/sentinel,不是cartalyst/sentinel。关键区别在于,此包旨在实现Sentry v2,而Cartalyst在cartalyst/sentinel名称下发布了本应是Sentry v3的版本。下面的说明专门针对rydurham/sentinel,在继续之前,请确保你使用的是正确的包。
如果你想要快速上手cartalyst/sentinel,我创建了一个桥接包,可能对你有帮助。(请查看这里)。如果你正在创建新的Laravel项目,我建议使用那个包而不是这个包。
版本本包有多个版本,每个版本针对Laravel框架的不同版本。
Laravel 5说明
通过Composer安装包
$ composer require rydurham/sentinel
确保你已经配置了应用程序的数据库和邮件设置。
此包使用"包发现"来自动将服务提供者注册到你的应用程序。
在app/Http/Kernel.php文件中注册中间件
protected $routeMiddleware = [ // .. 'sentry.auth' => \Sentinel\Middleware\SentryAuth::class, 'sentry.admin' => \Sentinel\Middleware\SentryAdminAccess::class, 'sentry.member' => \Sentinel\Middleware\SentryMember::class, 'sentry.guest' => \Sentinel\Middleware\SentryGuest::class, ];
发布视图、资产、配置文件和迁移
php artisan sentinel:publish
你可以指定一个"主题"选项来发布特定主题的视图和资产
php artisan sentinel:publish --theme="foundation"
运行php artisan sentinel:publish --list来查看当前可用的主题。
运行迁移确保在.env文件中设置了正确的数据库连接细节。
注意,你可能需要删除Laravel 5应用程序中提供的create_users_table和create_password_resets_table迁移。
php artisan migrate
数据库初始化
php artisan db:seed --class=SentinelDatabaseSeeder
有关默认用户名和密码的更多详细信息,请在这里查看。
设置"首页"路由。
Sentinel要求你在routes.php文件中有一个名为'home'的路由
// routes/web.php Route::get('/', function () { return view('welcome'); })->name('home');
基本用法
安装并初始化后,你可以通过以下路由立即使用此包
yoursite.com/loginyoursite.com/logoutyoursite.com/registeryoursite.com/users- 用户管理。仅限于管理员yoursite.com/groups- 群组管理。仅限于管理员。
Sentinel还提供了中间件,你可以使用它来防止未经授权的访问应用程序的路由和方法。
Sentinel\Middleware\SentryAuth- 要求用户有一个活跃的会话Sentinel\Middleware\SentryAdminAccess- 阻止除拥有“admin”权限的用户之外的所有用户访问。Sentinel\Middleware\SentryMember- 限制对特定组成员的访问。组名区分大小写。例如
// app\Http\Controllers\ExampleController.php public function __construct() { $this->middleware('sentry.member:Admins'); }
Sentinel\Middleware\SentryGuest- 将具有活动会话的用户重定向
高级用法
此包适用于简单的网站,但也可以将其集成到更大的应用程序中,进行更深层次的集成
- 禁用默认路由(通过配置),并手动指定对您的应用程序更有意义的路由
- 创建一个新的用户模型,该模型扩展默认的 Sentinel 用户模型
Sentinel\Models\User。请确保发布 Sentinel 和 Sentry 配置文件(使用sentinel:publish命令),并将 Sentry 配置文件中的 User Model 设置更改为指向您的新用户模型。 - 将
SentryUserRepository和/或SentryGroupRepository类注入到您的控制器中,以直接访问用户和组操作。您还可以考虑创建自定义仓库,这些仓库扩展了 Sentinel 中的仓库。
不建议扩展 Sentinel 控制器类;从长远来看,从头开始创建自己的控制器会更好。
在测试中使用 Sentinel
如果您发现自己处于想要对登录用户进行测试的情况,请转到您的 ``` tests/TestCase.php ``` 并添加此方法
use Illuminate\Events\Dispatcher; /** * Login to sentry for Testing purpose * @param $email * @return void */ public function sentryUserBe($email='admin@admin.com') { $user = \Sentry::findUserByLogin($email); \Sentry::login($user); (new dispatcher)->dispatch('sentinel.user.login', ['user' => $user]); }
然后您就可以开始以用户登录的状态测试您的应用程序,如下所示
class ExampleTest extends TestCase { /** * Dashboard functional test example. * * @return void */ public function testDashboardPage() { $this->sentryUserBe('admin@admin.com'); $this->visit('/dashboard') ->see('dashboard'); } }
文档 & 问题
有关此包的更多信息,请查看 Wiki
- 配置选项
- 事件 & 监听器
- 种子 & 迁移细节
- 默认路由
有关此包的任何问题,请发布在 包网站上。
本地化
Sentinel 已被翻译成多种其他语言,并始终欢迎新的翻译!有关详细信息,请查看 Sentinel 页面。