用户认证(登录注册)

未匹配的标注

Masonite 使身份验证变得非常简单。

身份验证脚手架命令

Masonite 附带一个命令来搭建一个基本的身份验证系统。您可以将此作为向您的应用程序添加身份验证的一个很好的起点。该命令将为您创建控制器、视图和邮件。

如果您想从头开始实施自己的身份验证,您可以下面的部分开始

首先运行以下命令来添加新的文件:

python craft auth

然后在您的routes文件中添加认证路由:

from masonite.authentication import Auth

ROUTES = [
  # routes
]

ROUTES += Auth.routes()

您可以访问 /login 或者 /register 路由来实现您的身份验证。

配置

Masonite认证的配置非常简单:

from app.User import User

GUARDS = {
    "default": "web",
    "web": {"model": User},
    "password_reset_table": "password_resets",
    "password_reset_expiration": 1440,  # 单位为分钟。限制为24小时。如果不是None时
}

这里的默认 key 是用于身份验证的保护。“web”字典是web相关路由的保护配置。

登录验证

您可以使用' auth '类和' attempt '方法验证登录:

from masonite.authentication import Auth
from masonite.request import Request

def login(self, auth: Auth, request: Request):
  user = auth.attempt(request.input('email'), request.input("password"))

现在将对用户登录进行身份验证,如果验证成功,则验证后的结果将是配置的模型。

如果验证失败,结果将是' None '。

如果您知道对应模型的主键,则可以通过id来获取:

from masonite.authentication import Auth
from masonite.request import Request

def login(self, auth: Auth, request: Request):
  user = auth.attempt_by_id(1)

你可以注销当前用户:

from masonite.authentication import Auth
from masonite.request import Request

def logout(self, auth: Auth):
  user = auth.logout()

用户信息

你可以获取当前经过身份验证的用户:

from masonite.authentication import Auth
from masonite.request import Request

def login(self, auth: Auth, request: Request):
  user = auth.user() #== <app.User.User>

如果用户未通过身份验证,这将返回 None

路由

你可以使用 auth 类快速注册多个路由:

from masonite.authentication import Auth

ROUTES = [
  #..
]

ROUTES += Auth.routes()

这将注册以下路由:

URI 地址 描述
GET /login 显示用户的登录表单
POST /login 尝试为用户登录
GET /home 登录尝试成功后的用户主页
GET /register 显示用户的注册表单
POST /register 保存发布的信息并创建一个新用户
GET /password_reset 显示密码重置表单
POST /password_reset 尝试重置用户密码
GET /change_password 显示请求新密码的表单
POST /change_password 请求新密码

Guards 警卫

Guards 是用于登录、注册和获取用户的封装逻辑。 Web Guard 使用 cookie 驱动程序设置一个名为 token 的 cookie,该 cookie 稍后用于获取用户。

你可以即时切换 Guards 以尝试对不同 Guards 进行身份验证:

from masonite.authentication import Auth
from masonite.request import Request

def login(self, auth: Auth, request: Request):
  user = auth.guard("custom").attempt(request.input('email'), request.input("password")) #== <app.User.User>

本文章首发在 LearnKu.com 网站上。

本译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。

原文地址:https://learnku.com/docs/masonite/4.0/fe...

译文地址:https://learnku.com/docs/masonite/4.0/fe...

上一篇 下一篇
贡献者:3
讨论数量: 0
发起讨论 只看当前版本


暂无话题~