bluecloud / laravel-security-question

Laravel项目中管理安全问题的助手

v1.0.0 2023-08-22 19:44 UTC

This package is auto-updated.

Last update: 2024-09-22 22:21:36 UTC


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 许可证 许可。