lundi 1 février 2016

Laravel 5 custom database sessions?

I'm new to Laravel (using 5.1). I have my entire DB schema (MySQL 5.5) diagrammed and have begin implementing it. The problem is, I need to adapt Laravel to use my sessions table. After making a new migration to bring the table more in line with what Laravel expects, I have this table:

+---------------+---------------------------------------+------+-----+---------+----------------+
| Field         | Type                                  | Null | Key | Default | Extra          |
+---------------+---------------------------------------+------+-----+---------+----------------+
| id            | bigint(20)                            | NO   | PRI | NULL    | auto_increment |
| id_hash       | varchar(255)                          | NO   | UNI | NULL    |                |
| user_id       | bigint(20) unsigned                   | NO   |     | 0       |                |
| created_at    | int(10) unsigned                      | NO   |     | 0       |                |
| updated_at    | int(10) unsigned                      | NO   |     | 0       |                |
| expires_at    | int(10) unsigned                      | NO   |     | 0       |                |
| last_activity | int(10) unsigned                      | NO   |     | 0       |                |
| platform      | enum('d','p','t','b','a','i','w','k') | NO   |     | d       |                |
| ip_address    | varchar(40)                           | NO   |     | 0.0.0.0 |                |
| payload       | text                                  | NO   |     | NULL    |                |
| user_agent    | text                                  | NO   |     | NULL    |                |
+---------------+---------------------------------------+------+-----+---------+----------------+

The main thing I need to accomplish is to have id as an auto-incrementing integer (because my Session model has relationships to other models) and use id_hash as the publicly identifying string (I also plan to cut id_hash back to 64), which I think is the token in the payload.

At session creation, id_hash, platform, ip_address, and user_agent will be set, never to change again. After authentication, user_id will be populated, then cleared at logout.

I'm ok with keeping the payload handling as-is.

Is this just a matter of creating a custom class that implements SessionHandlerInterface? What else needs to be in it for handling my extra fields that's not obvious from the session docs?



via Chebli Mohamed

Aucun commentaire:

Enregistrer un commentaire