用户
 找回密码
 入住 CI 中国社区
搜索
查看: 9067|回复: 10
收起左侧

[中级] DX Auth User Guide Version 1.0 参考手册

[复制链接]
发表于 2009-10-12 22:09:29 | 显示全部楼层 |阅读模式
由于原来的那个打开太慢,在网上又找了一个,这里发给大家。
RBAC是很重要的内容,希望大家多参与讨论~

翻译: Fanbin
DX Auth User Guide Version 1.0 参考手册
原文:http://dexcell.shinsengumiteam.com/dx_auth/index.html

欢迎使用 DX Auth

DX Auth 是一个CodeIgniter(PHP框架)的身份验证库。她的目标是是你容易地实现安全,容易的在你的项目中使用身份验证库,同时给你选择简单验证系统或全能验证系统的灵活性。

DX Auth 是以国际化思路构建的,所以所有的字符串都是在语言文件中可用的。(除了捆绑的示例,因为那时你的代码而不是库)。

它由 Jason Ashdown 基于 CL Auth 0.2.5 开发。

DX Auth的特色有哪些?

基本验证(登录,注销,注册,修改密码)。

记住我。

使用用户名或E-mail或两者登录(依赖于你的配置)。

忘记密码。

踢人。

最后登录的IP地址和时间(可选)。

E-mail 激活(可选)。

用户档案(可选)。

基于角色(管理员,用户,版主,等)。也支持继承(可选)。

基于URI和角色限制页面访问(可选)。

为每个角色自定义权限(可选)。

登录尝试(可选)。你可以使用它在指定的尝试次数后显示验证码以阻止机器人。

事件(例如:你可以自己加上在用户激活后发送欢迎站内信的代码)。

验证码(可选,自带的和reCAPTICHA均可用)。

简单的管理员面板(这样你可以对它自定义,把它包含进你自己的管理员面板,或者如果你不需要就删了它)。

多数特性是可选的,意味着你可以在配置文件里把它关掉,删掉,或放着不用它。

CL Auth 0.2.5 后的更新

如果你以前用过 CL Auth,你或许想知道在 CL Auth 0.2.5 后有些什么更新。

Bug 修正。

添加、修改函数

修改了代码结构

组改为角色

直接与 CI 绑定的 session 兼容

为国际化添加语言文件

所有的函数命名以 “lower_case” 风格取代了“camelCase”风格。

源代码书写遵循 CI 用户手册规范

添加源代码注释,这样你可以容易地跟进。

带有详细解释的 CodeIgniter 风格用户手册。

还有其他一些我忘了的鸟...

看起来挺好,从哪儿开始呢?请阅读“开始”或者看示例。

DX Auth 在 CI 1.7.0 下测试通过,但在以前版本中应该也可以使用。

CodeIgniter DX Auth 插件安装
原文:http://dexcell.shinsengumiteam.com/dx_auth/installation/index.html

下载 DX Auth

点此下载 官方页面:http://dexcell.shinsengumiteam.com/dx ... stallation/downloads.html

安装说明

安装带有示例的 DX Auth

  • 将压缩包解压。
  • 复制 captcha 文件夹到你的 CI 文件夹。让 Web 服务器对此文件夹可写。
  • 复制 application 文件夹到你的 CI application 文件夹。
  • 将 DX Auth 的数据库结构安装到你的数据库。
  • 打开 application/config/config.php。修改 $config['sess_use_database'] 为 TRUE。

只安装 DX Auth 库

  • 将压缩包解压。
  • 复制 captcha 文件夹到你的 CI 文件夹。让 Web 服务器对此文件夹可写。
  • 复制 application/plugins/ 文件夹到你的 CI application/plugins/ 文件夹。
  • 复制 application/config/ 文件夹到你的 CI application/config/ 文件夹。
  • 复制 application/libraries/ 文件夹到你的 CI application/libraries/ 文件夹。
  • 复制 application/helpers/ 文件夹到你的 CI application/helpers/ 文件夹。
  • 复制 application/models/ 文件夹到你的 CI application/models/ 文件夹。
  • 复制 application/language/ 文件夹到你的 CI application/language/ 文件夹。
  • 将 DX Auth 的数据库结构安装到你的数据库。
  • 打开 application/config/config.php。修改 $config['sess_use_database'] 为 TRUE。

搞定!

如果你初学 DX Auth,请阅读用户手册开始章节以开始使用 DX Auth。

数据库结构

下面是 DX Auth 库所需的数据库结构,或者你也可以在下载 zip 文件并解压后从 'schema.sql' 中找到它。

这将安装:

  • 名为 'ci_sessions' 的 CI Session 表。如果在你的数据库中已经有这个表你可以删掉 'ci_session' 的安装脚本。
  • DX Auth 库表。
  • 具有管理员角色的用户,用户名:admin,密码:hello。
  • 具有用户角色的用户,用户名:user,密码:hello。
  • role_table 中的默认角色(用户和管理员)。






CodeIgniter DX Auth 插件用户手册 - 开始
开始了

在你跟随示例安装并设置好 DX Auth 配置文件之后,你或许只想看看 DX Auth 捆绑的示例运行情况,而不是先阅读这个简单的示例。

要玩玩这个你可以打开:

  • {你的 CI URL}/auth/login/ 登录。
  • {你的 CI URL}/auth/logout/ 退出。
  • {你的 CI URL}/auth/register/ 注册。
  • {你的 CI URL}/auth/register_recaptcha/ 使用 reCAPTCHA 注册。
  • {你的 CI URL}/auth/forgot_password/ 使用忘记密码功能。
  • {你的 CI URL}/auth/change_password/ 在你登录后修改密码。
  • {你的 CI URL}/auth/cancel_account/ 在你登录后把帐号自杀。

要访问管理员控制面板(你需要以管理员身份登录或者你的用户角色已经授权给了权限表):

  • {你的 CI URL}/backend/users/ 管理用户。
  • {你的 CI URL}/backend/unactivated_users/ 管理未激活用户
  • {你的 CI URL}/backend/roles/ 管理角色。
  • {你的 CI URL}/backend/uri_permissions/ 管理URI权限。
  • {你的 CI URL}/backend/custom_permissions/ 管理自定义权限。

通常,{你的 CI URL} 就是在你 CI 配置文件中 'base_url' 和 'index_page' 项的组合。

CodeIgniter DX Auth 插件用户手册 - 函数参考
原文:http://dexcell.shinsengumiteam.com/dx_auth/general/functions.html

主要函数

下面是你可以在 DX Auth 库中可以使用的函数列表。

login($login, $password, $remember = TRUE)

登录用户。如果登录成功,返回 TRUE ,否则 FALSE。

$login 是用户名或E-mail地址或者两者均可,取决于 dx_auth 配置文件中的设置。

$password 是用户密码。

$remember 是使用户下次打开网站时仍记住用户(“记住登录”)。

如果函数返回 FALSE 你可以使用 get_auth_error() 函数返回一错误字符串。

logout()

注销用户。

register($username, $password,$email)

注册新用户。如果注册成功,返回新用户记录,否则返回 FALSE。

如果 dx_auth 配置文件中 DX_email_activation 的值为 TRUE ,那么它将发送E-mail验证,并要求用户验证帐号。

如果 dx_auth 配置文件中 DX_email_activation 值为 FALSE 且 DX_email_account_details 值为 TRUE ,那么它将通过E-mail发送用户帐号信息。

此函数将自动设置新用户角色ID ( role_id )为 1,所以你需要确保有 id = 1 的记录在角色表中,它的name字段值是类似“普通用户(normal user)”这样的。

forgot_password($login)

发送一封带有密钥的邮件以重置他们的密码。如果成功则返回 TRUE, 否则返回 FALSE。

$login 是用户名或E-mail。

由于密码是单向加密的,不可能得到原值。这就是我们需要重置它的原因。

如果函数返回 FALSE ,你可以使用 get_auth_error() 函数返回
 楼主| 发表于 2009-10-12 22:09:42 | 显示全部楼层
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;

-- --------------------------------------------------------

--
-- Table structure for table `ci_sessions`
--

CREATE TABLE IF NOT EXISTS `ci_sessions` (
`session_id` varchar(40) collate utf8_bin NOT NULL default '0',
`ip_address` varchar(16) collate utf8_bin NOT NULL default '0',
`user_agent` varchar(150) collate utf8_bin NOT NULL,
`last_activity` int(10) unsigned NOT NULL default '0',
`user_data` text collate utf8_bin NOT NULL,
PRIMARY KEY (`session_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

-- --------------------------------------------------------

--
-- Table structure for table `login_attempts`
--

CREATE TABLE IF NOT EXISTS `login_attempts` (
`id` int(11) NOT NULL auto_increment,
`ip_address` varchar(40) collate utf8_bin NOT NULL,
`time` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=1 ;

-- --------------------------------------------------------

--
-- Table structure for table `roles`
--

CREATE TABLE IF NOT EXISTS `roles` (
`id` int(11) NOT NULL auto_increment,
`parent_id` int(11) NOT NULL default '0',
`name` varchar(30) collate utf8_bin NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=3 ;

--
-- Dumping data for table `roles`
--

INSERT INTO `roles` (`id`, `parent_id`, `name`) VALUES
(1, 0, 'User'),
(2, 0, 'Admin');

-- --------------------------------------------------------

--
-- Table structure for table `permissions`
--

CREATE TABLE IF NOT EXISTS `permissions` (
`id` int(11) NOT NULL auto_increment,
`role_id` int(11) NOT NULL,
`data` text collate utf8_bin,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=1 ;

-- --------------------------------------------------------

--
-- Table structure for table `users`
--

CREATE TABLE IF NOT EXISTS `users` (
`id` int(11) NOT NULL auto_increment,
`role_id` int(11) NOT NULL default '1',
`username` varchar(25) collate utf8_bin NOT NULL,
`password` varchar(34) collate utf8_bin NOT NULL,
`email` varchar(100) collate utf8_bin NOT NULL,
`banned` tinyint(1) NOT NULL default '0',
`ban_reason` varchar(255) collate utf8_bin default NULL,
`newpass` varchar(34) collate utf8_bin default NULL,
`newpass_key` varchar(32) collate utf8_bin default NULL,
`newpass_time` datetime default NULL,
`last_ip` varchar(40) collate utf8_bin NOT NULL,
`last_login` datetime NOT NULL default '0000-00-00 00:00:00',
`created` datetime NOT NULL default '0000-00-00 00:00:00',
`modified` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=3 ;

--
-- Dumping data for table `users`
--

INSERT INTO `users` (`id`, `role_id`, `username`, `password`, `email`, `banned`, `ban_reason`, `newpass`, `newpass_key`, `newpass_time`, `last_ip`, `last_login`, `created`, `modified`) VALUES
(1, 2, 'admin', '$1$i75.Do4.$ROPRZjZzDx/JjqeVtaJLW.', 'admin@localhost.com', 0, NULL, NULL, NULL, NULL, '127.0.0.1', '2008-11-30 04:56:38', '2008-11-30 04:56:32', '2008-11-30 04:56:38'),
(2, 1, 'user', '$1$bO..IR4.$CxjJBjKJ5QW2/BaYKDS7f.', 'user@localhost.com', 0, NULL, NULL, NULL, NULL, '127.0.0.1', '2008-12-01 14:04:14', '2008-12-01 14:01:53', '2008-12-01 14:04:14');

-- --------------------------------------------------------

--
-- Table structure for table `user_autologin`
--

CREATE TABLE IF NOT EXISTS `user_autologin` (
`key_id` char(32) collate utf8_bin NOT NULL,
`user_id` mediumint(8) NOT NULL default '0',
`user_agent` varchar(150) collate utf8_bin NOT NULL,
`last_ip` varchar(40) collate utf8_bin NOT NULL,
`last_login` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
PRIMARY KEY (`key_id`,`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

-- --------------------------------------------------------

--
-- Table structure for table `user_profile`
--

CREATE TABLE IF NOT EXISTS `user_profile` (
`id` int(11) NOT NULL auto_increment,
`user_id` int(11) NOT NULL,
`country` varchar(20) collate utf8_bin default NULL,
`website` varchar(255) collate utf8_bin default NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=2 ;

--
-- Dumping data for table `user_profile`
--

INSERT INTO `user_profile` (`id`, `user_id`, `country`, `website`) VALUES
(1, 1, NULL, NULL);

-- --------------------------------------------------------

--
-- Table structure for table `user_temp`
--

CREATE TABLE IF NOT EXISTS `user_temp` (
`id` int(11) NOT NULL auto_increment,
`username` varchar(255) collate utf8_bin NOT NULL,
`password` varchar(34) collate utf8_bin NOT NULL,
`email` varchar(100) collate utf8_bin NOT NULL,
`activation_key` varchar(50) collate utf8_bin NOT NULL,
`last_ip` varchar(40) collate utf8_bin NOT NULL,
`created` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=1 ;
 楼主| 发表于 2009-10-12 22:10:52 | 显示全部楼层
但是,DX_Auth没有下载下来,谁有给传一下呗
发表于 2009-10-15 17:01:54 | 显示全部楼层
能不能做一个示例给大家讲讲怎么用?
发表于 2009-10-20 21:21:04 | 显示全部楼层
强烈要求做一个视频教程给大家讲一讲
发表于 2009-12-18 08:50:12 | 显示全部楼层
不能正确解压啊 怎么回事呢????
发表于 2009-12-18 10:14:51 | 显示全部楼层
回复 6# phelps_liu


    你用的什么解压缩工具,压缩包扩展名是?我估计是 Windows 下解压不了 Linux 下压缩的压缩包吧。
发表于 2009-12-18 10:59:36 | 显示全部楼层
就是个ZIP包 ,不是Linux的包吧??
发表于 2009-12-18 10:59:57 | 显示全部楼层
再说Linux下压的包RAR可以解压了
发表于 2011-5-13 15:26:47 | 显示全部楼层
解压出来,访问/auth/login/找不到页面啊,安装带有示例的 DX Auth貌似跟下面没有示例的没什么区别啊,怎么搞?

本版积分规则