nickel-jwt-session
Experimental jwt-based user session for nickel. Suggestions for improvements are welcome.
[]
(https://travis-ci.org/kaj/nickel-jwt-session)
Configuration
By default, nickel-jwt-session will store and look for the token in a cookie named "jwt", and the token will expire in 24 hours. The only required argument to the constructor is a private signing key:
extern crate nickel;
extern crate nickel_jwt_session;
use Nickel;
use SessionMiddleware;
You can also customize the cookie name:
extern crate nickel;
extern crate nickel_jwt_session;
use Nickel;
use ;
Or use Authorization: Bearer headers instead of cookies:
extern crate nickel;
extern crate nickel_jwt_session;
use Nickel;
use ;
And change the number of seconds the token will be valid for:
extern crate nickel;
extern crate nickel_jwt_session;
use Nickel;
use SessionMiddleware;
Usage
Username only
If you only want to store a username, you can use the set_jwt_user(), clear_jwt(), and authorized_user() convenience methods.
When you have a user that you have authenticated, use the set_jwt_user() method to put a new token for that user into the response:
To check to see if you have an authenticated user, use the authorized_user() method:
And to log a user out, call the clear_jwt() method:
Customized claims payload only
If you would like to store arbitrary data in the claims payload instead of a username, use the set_jwt_custom_claims() and valid_custom_claims() methods. The custom claims must be in a BTreeMap<String, Json>. Logging out is still done with the clear_jwt() method.
When you have successfully authenticated, use the set_jwt_custom_claims() method to put a new token with the data you include into the response:
use BTreeMap;
To get the claims out if the token is valid, use the valid_custom_claims() method:
And to end a session, call the clear_jwt() method:
Username and customized claims payload
If you would like to store both a username and arbitrary claims data, use the set_jwt_user_and_custom_claims() method to add the username and data to the token. You may then use both the authorized_user() and valid_custom_claims() methods, to get the username and the claims data, respectively. For example:
use BTreeMap;
To get the username and claims out if the token is valid, use the authorized_user() and valid_custom_claims() methods:
And to end a session, call the clear_jwt() method:
Examples
Full working examples can be found in the examples directory. Read the [API documentation] (https://rasmus.krats.se/doc/nickel-jwt-session/0.4.0/nickel_jwt_session/).
License
Licensed under either of
- Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (http://opensource.org/licenses/MIT)
at your option.
Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.