패키지 종속성( Package.swift
파일)에 NodesSSO
추가합니다.
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
의 서명을 살펴보세요.
예를 들어, configure.swift
또는 routes.swift
에 관련 Nodes SSO 경로를 추가해야 합니다.
services . register ( Router . self ) { container -> EngineRouter in
let router = EngineRouter . default ( )
try router . useNodesSSORoutes ( MyNodesSSOAuthenticatableUser . self , on : container )
return router
}
SSO 버튼을 렌더링하려면 NodesSSO 리프 태그를 추가해야 합니다.
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 라이센스에 따라 라이센스가 부여된 오픈 소스 소프트웨어입니다.