跳转至

独占内容

登录验证码

你可以在管理员登录界面设置验证码,只需要设置enable_captcha=True

login_provider = UsernamePasswordProvider(user_model=User, enable_captcha=True)

Google Recaptcha V2

除了图片验证码,你还可以设置Google Recaptcha V2来保护你的登录界面。

GoogleRecaptcha 类:

class GoogleRecaptcha(BaseModel):
    cdn_url: str = "https://www.google.com/recaptcha/api.js"
    verify_url: str = "https://www.google.com/recaptcha/api/siteverify"
    site_key: str
    secret: str

然后在LoginProvider设置google_recaptcha参数。

from fastapi_admin.providers.login import GoogleRecaptcha

await admin_app.configure(
    providers=[
        LoginProvider(
            google_recaptcha=GoogleRecaptcha(
                site_key=settings.GOOGLE_RECAPTCHA_SITE_KEY,
                secret=settings.GOOGLE_RECAPTCHA_SECRET,
            ),
        ),
    ]
)

登录失败IP限制

如果你需要在管理员多次登录失败后限制其IP以防止密码爆破,你可以使用LoginPasswordMaxTryMiddleware

admin_app.add_middleware(BaseHTTPMiddleware, dispatch=LoginPasswordMaxTryMiddleware(max_times=3, after_seconds=360))

权限控制

PermissionProvider 允许你通过管理员角色对每一项资源设置增删改查权限。

额外文件上传

ALiYunOSS

支持阿里云OSS文件上传。

AwsS3

支持AWS S3文件上传。

系统维护

如果你的站点维护,你可以设置展示处于维护状态中。

await admin_app.configure(maintenance=True)

管理日志

如果你需要记录所有的管理员操作日志,你可以增加配置AdminLogProvider

await admin_app.configure(providers=[AdminLogProvider(Log)])

站点搜索

启用站点搜索。

await admin_app.configure(providers=[SearchProvider()])

通知

启用websocket实时通知。

await admin_app.configure(providers=[NotificationProvider()])

OAuth2

当前内置支持GitHubOAuth2ProviderGoogleOAuth2Provider两种方式。

await admin_app.configure(
    providers=[
        GitHubProvider(Admin, settings.GITHUB_CLIENT_ID, settings.GITHUB_CLIENT_SECRET),
        GoogleProvider(
            Admin,
            settings.GOOGLE_CLIENT_ID,
            settings.GOOGLE_CLIENT_SECRET,
            redirect_uri="https://fastapi-admin-pro.long2ice.io/admin/oauth2/google_oauth2_provider",
        ),
    ]
)

最后更新: July 7, 2023 09:36:36