@aglyn/ shared- util- next
反钩和扶手 ?continue= 返回 URL 通过 Next.js App 路由器的登录流而不创建开放方向。 它被Aglyn控制台的登录页所使用,并可用于任何App路由器应用.
从Aglyn monorepo出版到npm. 随后的版本 语义版本。 。 。 .
安装
npm install @aglyn/shared-util-next
同伴依赖性 : next (单位:千美元)16.3.3和 react (单位:千美元)^19.2.8) (中文(简体) ).
里面有什么东西
1个客户模块('use client', (中文(简体) ), use-continue-url,从包根再导出:
useContinueUrl()- 回归[encoded, decoded, pushNext]: 当前已编码的路径名 URL( 要输入到登录页面的链接), 已验证continue来自查询字符串(或''),并具有通向它的功能.useContinueUrlDecoded()- 说吧[decoded, pushNext]。 。 。 .pushNext(url = '/')当有安全的 URL 时, 转到继续的 URL, 否则url相对目标用途router.push; 绝对使用window.location.assign。 。 。 .useContinueUrlEncoded()- 只编码当前路径名.useContinueHref(path)- 一个href用于在当前页面中保存continue数值。 只读useSearchParams,而不是路由器.withContinueUrl(path, continueUrl)- 同样的,作为一个简单的功能。 不安全或空值.isSafeContinueUrl(url)- 所有这一切背后的前提.ContinueParamName(单位:千美元)'continue'和continueParam(value)。 。 。 .
继续的 URL 被接受, 当它是一个相对路径, 解决到当前源头( 选中) isSameOriginPath 从 @aglyn/shared-util-http/safe-redirect),或绝对值 https: URL 主机是它的工作空间域或子域. 工作空间域来自 NEXT_PUBLIC_WORKSPACE_DOMAIN 默认为 aglyn.com,所以当您在 Aglyn 外使用这个时,设置变量。 其他一切皆被视为缺席.
使用量
'use client'
import { useContinueHref, useContinueUrlDecoded } from '@aglyn/shared-util-next'
export function AfterSignIn() {
const [, pushNext] = useContinueUrlDecoded()
const ssoHref = useContinueHref('/sso')
return (
<>
<button onClick={() => pushNext('/dashboard')}>Continue</button>
<a href={ssoHref}>Use single sign-on</a>
</>
)
}
钩子叫 useSearchParams,所以将它们置于 Suspense 按 Next.js 要求的边界.
怎样才合适
A 类 shared 软件包:通用,对Aglyn的模型一无所知。 共享软件包只能导入其他共享软件包; 此软件包取决于 @aglyn/shared-util-http。单列波中没有任何其他库依赖于它;控制台应用程序直接使用它.
许可证
阿帕奇2.0 (英语). 资料来源: https://github.com/aglyn/aglyn/tree/main/libs/shared/util/next 互联网档案馆的存檔,存档日期2014-12-21