This package builds with Swift Package Manager and is part of the Perfect project. It was written to be stand-alone and so does not require PerfectLib or any other components.
Ensure you have installed and activated the latest Swift 3.x tool chain.
Adding to your project
Add this project as a dependency in your Package.swift file.
// Used in email communications
// The Base link to your system, such as http://www.example.com/
var baseURL = ""
// Configuration of Session
SessionConfig.name = "perfectSession" // <-- change
SessionConfig.idle = 86400
SessionConfig.cookieDomain = "localhost" //<-- change
SessionConfig.IPAddressLock = false
SessionConfig.userAgentLock = false
SessionConfig.CSRF.checkState = true
SessionConfig.CORS.enabled = true
SessionConfig.cookieSameSite = .lax
The database and email configurations should be set as follows (if using JSON file config):
let opts = initializeSchema("./config/ApplicationConfiguration.json") // <-- loads base config like db and email configuration
httpPort = opts["httpPort"] as? Int ?? httpPort
baseURL = opts["baseURL"] as? String ?? baseURL
The following two session filters need to be added to your server config:
// (where filter is a [[String: Any]] object)
filters.append(["type":"request","priority":"high","name":SessionPostgresFilter.filterAPIRequest])
filters.append(["type":"response","priority":"high","name":SessionPostgresFilter.filterAPIResponse])
Perfect Local Authentication (PostgreSQL) 简体中文
Perfect Local Authentication (PostgreSQL) Library
This package provides Local Authentication libraries for projects that require locally stored and handled authentication.
Full documentation can be found at http://www.perfect.org/docs/authentication.html
A template application can be found at https://github.com/PerfectlySoft/Perfect-Local-Auth-PostgreSQL-Template, providing a fully functional starting point, as well as demonstrating the usage of the system.
This package builds with Swift Package Manager and is part of the Perfect project. It was written to be stand-alone and so does not require PerfectLib or any other components.
Ensure you have installed and activated the latest Swift 3.x tool chain.
Adding to your project
Add this project as a dependency in your Package.swift file.
To then use the LocalAuthentication module in your code:
Configuration
It is important to configure the following in main.swift to set up database and session configuration:
Import the required modules:
Initialize PerfectCrypto:
Now set some defaults:
Detailed Session configuration documentation can be dound at https://www.perfect.org/docs/sessions.html
The database and email configurations should be set as follows (if using JSON file config):
Otherwise, these will need to be set equivalent to this function https://github.com/PerfectlySoft/Perfect-LocalAuthentication-PostgreSQL/blob/master/Sources/LocalAuthentication/Schema/InitializeSchema.swift.
Set the session driver:
Request & Response Filters
The following two session filters need to be added to your server config:
For example, see https://github.com/PerfectlySoft/Perfect-Local-Auth-PostgreSQL-Template/blob/master/Sources/PerfectLocalAuthPostgreSQLTemplate/configuration/Filters.swift
Add routes for login, register etc
The following routes can be added as needed or customized to add login, logout, register:
An example can be found at https://github.com/PerfectlySoft/Perfect-Local-Auth-PostgreSQL-Template/blob/master/Sources/PerfectLocalAuthPostgreSQLTemplate/configuration/Routes.swift
Testing for authentication:
The user id can be accessed as follows:
If a user id (i.e. logged in state) is required to access a page, code such as this could be used to detect and redirect:
Further Information
For more information on the Perfect project, please visit perfect.org.