

# Auth Helper

The Auth package adds a convenience property on every request that makes it easy to authenticate, persist, and unauthenticate users.

## Authentication

### Checking

You can get the currently authenticated user.

    let user = req.auth.authenticated(User.self)

You can check to see if the user is authenticated.

    if req.auth.isAuthenticated(User.self) {
        ...
    }

You can also assert that the user is authenticated.

    let user = try req.auth.assertAuthenticated(User.self)

!!! note: A 403 Forbidden error will be thrown if the user is not authenticated.

### Manual

You can manually authenticate a user.

    if let user = try User.find(1) {
        req.auth.authenticate(user)
    }

You can also unauthenticate the currently authenticated user.

    try req.auth.unauthenticate()

!!! note: If the user is `Persistable`, they will also be unpersisted.

## Headers

The helper can be used to access common authorization headers.

    print(req.auth.header)

### Token

The header has additional conveniences for parsing out bearer tokens.

    print(req.auth.header?.bearer)

Tip

You can use `_authorizationBasic` and `_authorizationBearer` to send tokens in the URL string.

### Password

And basic auth username + password.

    print(req.auth.header?.basic)