nodes sso
Version 0.3.1
将NodesSSO
添加到包依赖项(在Package.swift
文件中):
dependencies: [
... ,
. package ( url : " https://github.com/nodes-vapor/nodes-sso.git " , from : " 1.0.0 " )
]
以及您的目标(例如“应用程序”):
targets: [
...
. target (
name : " App " ,
dependencies : [ ... " NodesSSO " ... ]
) ,
...
]
从此存储库中复制Resources/Views
和Public
中的NodesSSO
文件夹,并将它们粘贴到项目的相同目录中。您可以将此存储库下载为 zip 格式,然后将文件移动到上述目录中。
首先确保您已在需要的地方导入 NodesSSO:
import NodesSSO
public func configure ( _ config : inout Config , _ env : inout Environment , _ services : inout Services ) throws {
try services . register ( NodesSSOProvider < MyNodesSSOAuthenticatableUser > ( config : NodesSSOConfig (
projectURL : " https://myproject.com " ,
redirectURL : " https://url-for-sso.com " ,
salt : " MY-SECRET-HASH-FOR-SSO " ,
environment : env
) ) )
}
还有一些参数用于设置应在项目中启用 SSO 的路由。查看NodesSSOConfig
的签名以获取更多信息。
确保添加相关的节点 SSO 路由,例如在您的configure.swift
或routes.swift
中:
services . register ( Router . self ) { container -> EngineRouter in
let router = EngineRouter . default ( )
try router . useNodesSSORoutes ( MyNodesSSOAuthenticatableUser . self , on : container )
return router
}
为了渲染嵌入 SSO 按钮,您需要添加 NodesSSO Leaf 标签:
public func configure ( _ config : inout Config , _ env : inout Environment , _ services : inout Services ) throws {
services . register { _ -> LeafTagConfig in
var tags = LeafTagConfig . default ( )
tags . useNodesSSOLeafTags ( )
return tags
}
}
在您希望显示 NodesSSO 按钮的页面上,嵌入sso-button
叶文件:
#embed("NodesSSO/sso-button")
NodesSSOAuthenticatable
NodesSSOProvider
是通用的,需要符合NodesSSOAuthenticatable
的类型。该协议有一个在 SSO 成功完成时被调用的方法:
public static func authenticated ( _ user : AuthenticatedUser , req : Request ) -> Future < Response >
有了这个AuthenticatedUser
实施者就可以查找email
并创建用户(如果不存在),或者如果存在,则自动让用户登录。
该包由 Nodes 的 Vapor 团队开发和维护。
该软件包是根据 MIT 许可证授权的开源软件