@frigear-nu/auth (英语)
认证可怕的生态系统. 签名于: 电子邮件/密码、密码重置、魔法链接、电子邮件
校验,密码和OAuth提供商(包括"Log in with frigear.nu"),带有选择登录/注册页面.
识别呼叫者页:1 requireAuth 对于每个呼叫者可以认证的方式: 饼干会话,静态
用户 API 令牌 (单位:千美元)fnu_… 默认, authentication.apiTokens.prefix· ; apiTokens: false 关了它 OAuth 访问符 对申请发出的通知.
访问控制页:1 authorize(event, permission, record?) 给每个打电话的人 范围狭小,一个标志可以做什么,
而主人公现在的角色依然适用.
// server/api/tickets.get.ts
const { user } = await authorize(event, 'tickets:read')
// Account-level routes never accept bearer credentials:
const owner = await requireAuth(event, { sessionOnly: true })
requireAuth, (中文(简体) ),getAuth自动输入服务器代码;@frigear-nu/users添加requireUser编号 :getUser仅供用户使用.- 模块注册权限
addPermission,带有addScope,默认角色addRole, (中文(简体) ), 政策addPolicies和证书类型addAuthResolver(单位:千美元)@frigear-nu/auth/utils) (中文(简体) ). 服务器代码 检查访问权限authorize编号 :allows(自动进口)definePolicy和东道主 覆盖在authorization:before钩. - Auth 只能通过一个
AuthUserStore,哪个@frigear-nu/users登记册setAuthUserStore(三);@frigear-nu/oauth-server提供访问脚本解析器. - 签名配置于
authentication.settings(单位:千美元)password, (中文(简体) ),magicLink, (中文(简体) ),webAuthn, (中文(简体) ),oauth, (中文(简体) ),pages(中文(简体) ). - 任何nuxt-auth-utils OAuth 供应商 (Auth0, Okta, Keycloak,
oidc,...) 在/api/auth/<provider>一次NUXT_OAUTH_<PROVIDER>_*(一) 证书的设定;settings.oauth.<provider>只覆盖其标签、图标和注册. - 配置密钥是
authentication(单位:千美元)auth属于 nuxt-auth-utils). - 与客户端模式相同的客户端 API :
useUserSession(), (中文(简体) ),useAuth()(单位:千美元)login登录页面?redirect=, (中文(简体) ),logout结束届会)和$api编号 :useApi()。 。 。 .$api发送呼叫者的证书( 来信 Cookie 和授权信头在服务器渲染过程中) 仅针对此应用程序自己的路径和来源, 绝不针对另一个 URL 或外国baseURL。来自此应用程序的401在清除会话并进入登录页面时签名。 一个 应用不能提供自己的$api。 。 。 .
客户端模式
authentication.mode: 'client' 将 Auth 变成 SPA 的公共 OAuth 2.1 / OpenID 连接客户端 (PKCE) 和
在发行商签名的电容app:没有服务器,没有数据库,没有 nuxt-auth-utils,以及 ssr: false设置模式
在应用程序自己的配置.
export default defineNuxtConfig({
modules: ['@nuxt/ui', '@frigear-nu/auth'],
authentication: {
mode: 'client',
// Issuer and API also from NUXT_PUBLIC_AUTHENTICATION_CLIENT_ISSUER / _API_BASE.
client: { issuer: 'https://frigear.nu', clientId: 'my-app', scopes: ['openid', 'profile', 'offline_access'] },
},
})
useUserSession()服务器模式( i)loggedIn, (中文(简体) ),user,与user.id发行人sub),加 (中文(简体) )useAuth()(单位:千美元)login, (中文(简体) ),completeLogin, (中文(简体) ),logout, (中文(简体) ),getAccessToken, (中文(简体) ),signingIn,(......)和$api编号 :useApi(),发送 无记名标记client.apiBase财务报告和审定财务报表client.apiOrigins只有这个.scopes必须包含openid:用户出自id token,一个没有失败的签入.- 用户是
{ id: sub, sub, name, email, avatar }(不从符号读取:@frigear-nu/authorization, (中文(简体) ),useAuthorization()问发行人/api/auth/me/access与无记名标志,或 掉回进入符号permissionsc. 索赔.client.userinfo: true合并/userinfo· ;client.mapUser: './app/auth/map-user'自己地图({ claims, userinfo, api }) => user,可能为Aync. 直至 一个同步映射完成, 当它断线时,user是索赔映射. - 登录和回调页面(与
@nuxt/ui时settings.pages.login财务报告和审定财务报表client.callbackPath; 品牌通过app.config.ts→authentication.login。 。 。 . - 警卫属于
@frigear-nu/authorization并且只是UX:由API决定. 钩子:auth:signed-in, (中文(简体) ),auth:signed-out, (中文(简体) ),auth:refresh-failed, (中文(简体) ),auth:user-failed。 。 。 . - 框架不可知的核心是:
@frigear-nu/auth/client-core,电容适配器@frigear-nu/auth/capacitor, (中文(简体) ), 类型@frigear-nu/auth/client-types· ;@frigear-nu/auth/mode已经resolveAuthMode财务报告和审定财务报表isSafeRedirect页:1 其他模块.
见 文档 用于完整的模型、安全属性和符号 API.
发展
pnpm --filter '@frigear-nu/auth' test
E2e套间使用 test/fixtures/auth-db他们的移民是承诺的。 改变计划后,把它重新生成
模块- kit 文档中描述。 客户端模式的定着是 test/fixtures/client-*· ; --project unit 运行
单是单位测试.