bluecloud / laravel-security-question
Laravel项目中管理安全问题的助手
v1.0.0
2023-08-22 19:44 UTC
Requires
- php: ^7.4|^8.0
Requires (Dev)
- laravel/framework: ^8.0
README
Laravel安全问题助手帮助您轻松集成安全问题的功能到项目中
安装
composer require bluecloud/laravel-security-question
迁移表
运行以下命令以创建表以启用保存安全问题
php artisan migrate
发布配置
此包允许您发布一个配置文件来更改包的设置。运行以下命令并选择 Bluecloud\SecurityQuestionHelpers\SecurityQuestionHelpersProvider
。将在 config/questions.php
创建一个配置文件
php artisan vendor:publish
加载问题
运行以下命令
php artisan questions:migrate
向用户添加特性
如下所示,将 HasSecurityQuestions
特性添加到您的 App\Models\User
模型中。
use Bluecloud\SecurityQuestionHelpers\HasSecurityQuestions; class User extends Authenticatable { use HasApiTokens, HasFactory, Notifiable, HasSecurityQuestions; }
为用户添加问题
要为用户添加问题,请添加以下代码
$user = auth()->user(); $user->save_questions([ ["security_question_id" => 1, "answer" => "Blantyre, Malawi"] ]);
检查问题答案
要检查用户的提交答案与保存的答案,请添加以下代码
$question = SecurityQuestion::find(1); $check = $user->check_answer($question, "Blantyre, Malawi");
注意:问题将 同步。如果问题已为用户附加,则新答案将更新现有记录
路由
要管理问题,您可以使用预配置的API端点
1. 列出安全问题
GET /security-questions
2. 创建安全问题
POST /security-questions
{
"name": "Sample security question"
}
3. 删除安全问题
DELETE /security-question/{id}
配置
更改包设置
1. 默认问题
导航到 config/questions.php
并找到默认安全问题。如果需要,可以更改。
<?php return [ "seeds": [] ]
严格模式
默认情况下,包关闭了 严格模式
。当严格模式关闭时,包忽略答案的大小写,并删除所有空格和特殊字符,以简化用户提交答案的匹配。如果希望答案匹配精确的大小写和空格,请在 config/questions.php
中打开 严格模式
'strict' => true,
中间件
要保护 /security-questions
路由和在 config/questions.php
中的中间件。例如,要添加 auth:sanctum
进行身份验证
'middleware' => ["auth:sanctum"]
基本路由路径
要更改 /security-questions
的基本路由路径,例如在 config/questions.php
中更改以下行
'path' => 'api/questions',
许可
Laravel Sanctum 是开源软件,使用 MIT 许可证 许可。