j7mbo/silex-auth-skeleton

Silex 框架的骨架,已集成登录、MySQL认证(doctrine)、防火墙、路由、配置文件和auryn DiC。

dev-master 2015-04-19 13:33 UTC

This package is not auto-updated.

Last update: 2024-09-14 14:45:10 UTC


README

对于要找到最佳代码和目录结构以构建一个有效的Silex骨架而感到烦恼?没关系,看这里。这段代码是满足所有需求的绝佳起点。

更新(2015年4月19日):请关注新的Aurex项目,它将取代silex-auth-skeleton。它更快、更优雅,并使用最新的Silex(2.x)和Symfony 2组件(2.7.*)。

特性

  • 配置从YAML文件加载,就像在Symfony2中一样
  • 特定环境的配置文件(dev/live)、路由配置文件、防火墙文件
  • 使用MySQL认证(用户名 邮箱)和SHA1密码要求的登录表单
  • 已设置好Twig,可立即用于模板
  • 出色的自动装配DiC Auryn,用于自动对象实例化/连接
  • 正在运行的防火墙 - 目前,匿名用户可以访问 //login。其他所有内容都是受保护的!
  • 通过ircmaxell的 password_compat 库进行BCrypt密码认证
  • Doctrine ORM集成,包括Entity / Repositories / 命令行(Symfony拥有的酷炫功能)
  • 代码在控制器中,请求自动路由到这些控制器
  • 布局优雅且符合PSR规范的代码

安装

您可以直接通过 clone此仓库 来获取代码

$ git clone git://github.com/j7mbo/silex-auth-skeleton.git

一旦您有了代码,您需要使用 composer 来更新您的依赖项

$ cd silex-auth-skeleton/
$ composer update

您需要以下数据库表

+----------+------------------+------+-----+---------+----------------+
| Field    | Type             | Null | Key | Default | Extra          |
+----------+------------------+------+-----+---------+----------------+
| id       | int(11) unsigned | NO   | PRI | NULL    | auto_increment |
| username | varchar(100)     | NO   | UNI |         |                |
| email    | varchar(100)     | NO   | UNI | NULL    |                |
| password | varchar(255)     | NO   |     |         |                |
| roles    | varchar(255)     | NO   |     |         |                |
| is_active| tinyint(1)       | NO   |     | 0       |                |
+----------+------------------+------+-----+---------+----------------+

创建上述数据库和表的SQL语句

mysql> CREATE DATABASE `silexauth`;
mysql> CREATE TABLE `users` (
    `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
    `username` varchar(100) NOT NULL DEFAULT '',
    `email` varchar(100) NOT NULL,
    `password` varchar(255) NOT NULL DEFAULT '',
    `roles` varchar(255) NOT NULL DEFAULT '',
    `is_active` tinyint(1) NOT NULL,
    PRIMARY KEY (`id`),
    UNIQUE KEY `unique_email` (`email`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

您还需要一个 测试用户

mysql> INSERT INTO `users` (username, email, password, roles) VALUES (
    'test', 'test@test.com', '$2y$10$k5O1HnSI8N0ORJQnMnFpR.Z0.r7nx4Epk0a8J3d/sCdATF0BStBKe', 'ROLE_USER', '1'
);

您还需要一个 主机 / 虚拟主机 来路由所有内容。

将 "127.0.0.1 silex-auth.local"(不带引号)添加到您的 /etc/hosts 文件中。

运行以下命令来为 silex-auth.local 创建一个 虚拟主机文件

$ cd /etc/apache2/sites-available
$ sudo nano silex-auth.local

将以下内容复制/粘贴到您的 silex-auth.local 文件中

<VirtualHost *:80>
    ServerName silex-auth.local
    ServerAlias silex-auth.local

    DocumentRoot "/home/james/Dev/github/silex-auth/web/"
    DirectoryIndex index.php

    <Directory "/home/james/Dev/github/silex-auth/web/">
        AllowOverride All
        Allow from All
    </Directory>
</VirtualHost>

现在保存它,启用虚拟主机,并重启apache,以确保一切正常加载。

$ ctrl + x, then y, then enter
$ sudo a2ensite silex-auth.local
$ sudo service apache2 restart

重要的是,您还需要在 silx-auth 根目录中(不是 /web)创建一个 .htaccess 文件,其中包含

FallbackResource /index.php

现在您应该能够在浏览器中指向 http://silex-auth.local 并看到主页。点击登录链接后,您可以使用 "test" 和 "password",或者 "test@test.com" 和 "password" 登录。