zoukankan      html  css  js  c++  java
  • DX Auth User Guide Version 1.0 参考手册

    CodeIgniter DX Auth 中文手册翻译

     

    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_auth/installation/downloads.html

    安装说明

    安装带有示例的 DX Auth

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

    只安装 DX Auth 库

    1. 将压缩包解压。
    2. 复制 captcha 文件夹到你的 CI 文件夹。让 Web 服务器对此文件夹可写。
    3. 复制 application/plugins/ 文件夹到你的 CI application/plugins/ 文件夹。
    4. 复制 application/config/ 文件夹到你的 CI application/config/ 文件夹。
    5. 复制 application/libraries/ 文件夹到你的 CI application/libraries/ 文件夹。
    6. 复制 application/helpers/ 文件夹到你的 CI application/helpers/ 文件夹。
    7. 复制 application/models/ 文件夹到你的 CI application/models/ 文件夹。
    8. 复制 application/language/ 文件夹到你的 CI application/language/ 文件夹。
    9. 将 DX Auth 的数据库结构安装到你的数据库。
    10.  打开 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 中的默认角色(用户和管理员)。
    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
    (10'User'),
    (20'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
    (12'admin''$1$i75.Do4.$ROPRZjZzDx/JjqeVtaJLW.''admin@localhost.com'0NULLNULLNULLNULL'127.0.0.1''2008-11-30 04:56:38''2008-11-30 04:56:32''2008-11-30 04:56:38'),
    (21'user''$1$bO..IR4.$CxjJBjKJ5QW2/BaYKDS7f.''user@localhost.com'0NULLNULLNULLNULL'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
    (11NULLNULL);
     
    -- --------------------------------------------------------
     
    --
    -- 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 ;

    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() 函数返回一错误字符串。

    reset_password($username, $key = '')

    基于 用户名和密钥重设密码。通常和 forgot_password() 函数搭配使用。如果成功返回 TRUE 否则返回 FALSE。

    activate($username, $key = '')

    基于 用户名和密钥激活用户。在 dx_auth 配置文件中 DX_email_verification 设置为 TRUE 的前提下,它常用于在注册后激活用户帐号。

    change_password($old_pass, $new_pass)

    修改 当前已登录用户的密码。调用此函数前请确保你已经检查用户成功登录了。成功返回 TRUE,失败返回 FALSE。

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

    cancel_account($password)

    从数 据库删除当前已登录用户的帐号。调用此函数前请确保你已经检查用户成功登录了。 成功返回 TRUE,失败返回 FALSE。

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

    get_user_id()

    返回 用户 ID,只在用户已登录后可用。

    get_username()

    返回 用户名,只在用户已登录后可用。

    get_role_id()

    返回 用户角色 ID,只在用户已登录后可用。 

    get_role_name()

    返回 用户角色名,只在用户已登录后可用。

    is_admin()

    检查 用户是否为管理员,只在用户已登录后可用。

    当用户的角色 ID 和 角色(roles)表中 name 字段值为'admin'(不分大小写)的那行记录的 role_id 字段的值相同,函数将返回 TRUE。

    is_role($roles = array(), $use_role_name = TRUE, $check_parent = TRUE)

    检查 用户是否有 $roles 权限。
    如果 $use_role_name = TRUE 则 $roles 是类似于 '管理员','编辑','等' 的权限名,否则 $roles 是类似于 0, 1, 2 的 role_id 。

    如果 $check_parent 为 TRUE 意味着如果此角色在用户角色中没有找到,它将检查父角色中是否有那个用户角色。

    你可以在 $roles 参数中传递一个数组或者一个字符串。

    示例:

    if ($this->dx_auth->is_role('admin')) 

        // Do something 

     
    if ($this->dx_auth->is_role(array('admin', 'moderator')) 

        // Do something 

     
    // Using an Role ID as $roles parameter 
    if ($this->dx_auth->is_role('1', FALSE)) 

        // Do something 

     
    if ($this->dx_auth->is_role(array('1', '2'), FALSE)) 

        // Do something 

    is_logged_in()

    检查 用户是否已登录。

    is_banned()

    检查用户是否为一个被踢用户。

    你应该在调用 login() 函数后才调用这个函数。这样如果 login() 函数返回 FALSE,你可以检查用户是被踢了还是未使用这个函数。

    get_ban_reason()

    取得 被踢用户的被踢原因。

    你应该在调用 login() 函数后才调用这个函数。这样如果 login() 函数返回 FALSE,且用户已被踢,你可以使用这个函数取得原因。

    is_username_available($username)

    通过 在数据库中查询确认没有相同的用户名,检查用户名是否可用。此函数常用于表单验证的回调函数中。

    is_email_available($email)

    通过 在数据库中查询确认没有相同的E-mail,检查E-mail是否可用。此函数常用于E-mail表单验证的回调函数中。

    get_auth_error()

    当 login(), forgot_password(), change_password(), cancel_account() 函数返回失败时,取得一个错误信息。

    is_max_login_attempts_exceeded()

    检查 登录尝试次数是否超过了在 dx_auth 配置文件中指定的值。

    登录次数的增长通过登录 IP 识别。

    check_uri_permissions($allow = TRUE)

    这个 将检查当前登录的用户是否允许访问当前 URI,基于他所属的角色,或者他的父角色。

    下面是当你调用这个函数时将会发生的细节:

    首先,函数将检查用户是否已登录,如果用户还没登录,它将重定向到登录 URI。

    但如果用户已登录,它将检查用户是否为管理员(admin)。

    如果用户是管理员,它将允许访问这个URI。

    但如果用户不是管理员,它将检查用户所属角色或父角色是在数据库权限表中否有访问当前URI的权限。

    如果用户被禁止,它既爱那个重定向到禁止访问的URI。

    你可以在控制器构造器中调用 check_uri_permissions() 以保护整个控制器:

    class Home extends Controller  

        function Home() 
        { 
            parent::Controller(); 
     
            $this->dx_auth->check_uri_permissions(); 
        } 

    或者在一个函数中使用它:

    function hello_world() 

        $this->dx_auth->check_uri_permissions(); 
         
        // Do something 

    实例:

    有一个用户 role_id = 1 (普通用户 normal user).
    权限表中,有一个指定 了 role_id = 1 的记录,它有 '/test/'  URI 的 URI 访问权限。
    现在这个用户想要访问 '/test/hi/'。

    如果你在 Test 控制器中有这样的代码:

    class Test extends Controller  

        function Test() 
        { 
            parent::Controller(); 
             
            // Secure controller 
            $this->dx_auth->check_uri_permissions(); 
        } 
         
        function hi() 
        { 
            echo 'Hi'; 
        } 
         
        function hello() 
        { 
            echo 'Hello'; 
        } 

    这个用户将会通过检查并访问'/test/hi/' URI,会显示 'Hi' 。
    因为如果权限 URI 设置为 '/test/',意味着对Test类和它下面所有方法函数授权。

    如果你想只对函数限制访问,你可以在设置权限 URI 时指定 '/class/function/'

    例如,在上面的实例中,如果你把 role_id = 1 的URI权限设置为'/test/hi/',用户将可以访问'/test/hi/' URI,但不能访问'/test/hello/' URI。

    你也可以设置 URI 权限为 '/' ,以打开对所有 URI 的访问权限。

    也可以通过在调用 check_uri_permissions() 时指定 $allow = FALSE (译注:此处原文为 TRUE,应该是有误)以反转前面所有的解释。
    这样它将会在 URI 权限找到时禁止用户访问URI ,而不是在 URI 权限找到时允许用户访问 URI。

    要设置 URI 权限,你必须使用在权限模型中给出的函数,或者使用你自己的。请查看关于设置权限的示例。

    CL Auth 用户请注意,URI 权限现在的格式重命名为 '/class/function/' ,取代了 '/class/function'

    继承

    如果用户角色有一个父角色,那用户也有到父角色的权限,等等。要阐述这个,让我们先来看一下这个 URI 权限图解:

    User
    {
     '/home/'
     '/help/'
    }

    Moderator: User
    {
     '/moderator/'
    }

    Super_Moderator: Moderator
    {
     '/super/'
    }

    Big_Moderator: Moderator
    {
     '/big/'
    }

    这意味着,Super_Moderator 角色可以访问 Moderator 和User 的 URI,但不能访问 Big_Moderator 的 URI。

    要使用这个特性,你需要在角色表中为每个角色中的 parent_id 指定一个父角色。

    这是前面的示例用到的角色表结构。

    id  parent_id  name
    -------------------------
    1    0    User
    2    0    Admin
    3    1    Moderator
    4    3    Super Moderator
    5    3    Big Moderator


    注意,这个功能是可 选的,或许你完全可以使用 is_admin(), is_role(), is_logged_in() 这些函数搞定用户验证,而不必使用它。

     

    CodeIgniter DX Auth 插件用户手册 - 事件

    事件

    事件是 DX Auth 库中的特定函数被调用时触发的函数。要使用这些事件你需要打开 'libraries/DX_Auth_Event.php',放上你的代码。

    下面就是你可以在 DX Auth 库中可以用到的事件。

    user_activated($user_id)

    如果配置中的 'DX_email_activation' 值为 TRUE,此事件就会在用户通过他们E-mail中收到的密钥成功激活后发生。

    如果配置中的 'DX_email_activation' 值 为 FALSE,此事件就会在用户成功注册后发生。

    $user_id 是被激活用户的ID。

    默认情况下,这儿会有创建用户档案的代码。如果你不需要用户档 案,你可以删除这些代码。

    user_logged_in($user_id)

    此事件在用户登录后发生。$user_id 是登录用户的ID。

    user_logging_out($user_id)

    此事件在用户退出前发生。$user_id 是退出用户的ID。

    user_changed_password($user_id, $new_password)

    此事件在用户修改密码后发生。$user_id 是修改密码用户的ID,$new_password 是新的密码。

    user_canceling_account($user_id)

    此事件在用户帐号被自杀前发生。$user_id 是要被自杀的帐号ID。

    默认情况下,这儿会有删除用户档案的代码。如果你不需要用户档 案,你可以删掉这些代码。

    checked_uri_permissions($user_id, &$allowed)

    此事件在 DX_Auth 中的 check_uri_permissions() 函数被调用时发生。在检查过用户角色是否被授权访问 URI 后,此事件将被触发。

    $allowed 是在执行检查之前的结果,由于它是以引用传递的,它的值是可以修改的。

    got_permission_value($user_id, $key)

    此事件在 DX_Auth 中的 get_permission_value() 被调用时发生。

    got_permissions_value($user_id, $key)

    此事件在 DX_Auth 中的 get_permissions_value() 被调用时发生。

    sending_account_email($data, &$content)

    此事件在 dx auth 发送带有帐号信息的邮件之前发生。

    $data 是一个数组,包含 username, password, email, 和 last_ip。
    $content 是E-mail内容,以引用传递。

    默认情况下那儿有关于怎样创建内容的示例代码。你可以修改它以适 合你的需求。

    sending_activation_email($data, &$content)

    此事件在 dx auth 发送激活邮件之前发生。

    $data 是一个数组,包含 username, password, email, last_ip, activation_key, activate_url。
    $content 是E-mail内容,以引用传递。

    默认情况下那儿有关于怎样创建内容的示例代码。你可以修改它以适 合你的需求。

    sending_forgot_password_email($data, &$content)

    此事件在 dx auth 发送重设密码邮件之前发生。

    $data 是一个数组,包含 password, key, 和 reset_password_uri。
    $content 是E-mail内容,以引用传递。

    默认情况下那儿有关于怎样创建内容的示例代码。你可以修改它以适 合你的需求。

    get_permission_value($key, $check_parent = TRUE)

    通过 指定的键获取权限值。只在用户已登录后才可调用此函数。

    $key 是权限数组键(注意:权限在表中是以数组存储的)。
    如果 $check_parent 为 TRUE 意味着如果权限值在用户角色中没有找到,它将尝试获取父角色的权限值

    如果权限找到返回其值,否则返回 NULL 。

    要设置权限,你必须使用在权限模型中指定的函数,或者自己编写。 请查看关于设置权限的示例。

    注意:使用此函数是可选的, 或许你完全可以手动检查用户权限,并使用 is_admin(), is_role() 这样的函数手动搞定权限,而不必使用它。

    get_permissions_value($key, $array_key = 'default')

    通过 指定的键获取那些权限的值。只在用户已登录后才可调用此函数。

    此函数将在用户权限和父权限中搜索键。

    $key 是权限数组键 (注意:权限在表中是以数组存储的)。

    $array_key = 'default'. 返回以 0,1,2 作为键值排列的数组。
    $array_key = 'role_id'. 返回以 role_id 作为键值排列的数组。
    $array_key = 'role_name'. 返回以 role_name 作为键值排列的数组。

    如果权限找到,返回包含其值的数组,否则返回 NULL。

    要设置权限,你必须使用在权限模型中指定的函数,或者自己编写。 请查看关于设置权限的示例。

    注意:使用此函数是可选的, 或许你完全可以手动检查用户权限,并使用 is_admin(), is_role() 这样的函数手动搞定权限,而不必使用它。

    deny_access($uri = 'deny')

    调用 此函数将把用户重定向到 $uri 变量设定的值。默认 $uri 为 'deny'。

    $uri = 'deny' 将重定向用户到 dx_auth 配置文件中指定的 'DX_deny_uri' 值。
    $uri = 'login' 将重定向用户到 dx_auth 配置文件中指定的 'DX_login_uri' 值。
    $uri = 'banned' 将重定向用户到 dx_auth 配置文件中指定的 'DX_banned_uri' 值。

    catpcha()

    创建 一个用于表单验证的图片验证码。

    get_catpcha_image()

    获取 创建的HTML图像。请在视图中使用这个函数。

    is_captcha_expired()

    检查 创建的验证码是否已过期。请在表单验证回调函数中使用这个函数。

    is_captcha_match($code)

    检查 创建的验证码文本是否与 $code 匹配。请在表单验证回调函数中使用这个函数。

    reCAPTCHA 函数

    (译注:一系列用于英文验证码的函数,可以有声音验证,中文网站怕是很少用到, 先不翻译了。感兴趣的朋友请查看原文)

    CodeIgniter DX Auth 插件用户手册 - 配置

    原文: http://dexcell.shinsengumiteam.com/dx_auth/general/config.html

    配置

    下面是 DX Auth 库中的配置,你可以看一下代码中的注释。

    /*
    | -------------------------------------------------------------------
    | DX Auth Config
    | -------------------------------------------------------------------
    */

    /*
    |--------------------------------------------------------------------------
    | 网站细节
    |--------------------------------------------------------------------------
    |
    | 这些细节用于 DX Auth 库发送的E-mail里。
    |
    */

    $config['DX_website_name'] = '你的网站名';
    $config['DX_webmaster_email'] = 'webmaster@yourhost.com';
    /*
    |--------------------------------------------------------------------------
    | 数据库表
    |--------------------------------------------------------------------------
    |
    | 设定 DX Auth 使用的表
    |
    | 'DX_table_prefix' 允许你指定其余表用到的表前缀
    |
    | 例如 'DX_table_prefix' 设定为 'DX_','DX_users_table' 设置为 'user',
    | 将会使 DX Auth 使用 'DX_users' 作为用户表.
    |
    */

    $config['DX_table_prefix'] = '';
    $config['DX_users_table'] = 'users';
    $config['DX_user_profile_table'] = 'user_profile';
    $config['DX_user_temp_table'] = 'user_temp';
    $config['DX_user_autologin'] = 'user_autologin';
    $config['DX_roles_table'] = 'roles';
    $config['DX_permissions_table'] = 'permissions';
    $config['DX_login_attempts_table'] = 'login_attempts';
    /*
    |--------------------------------------------------------------------------
    | 密码混淆 (salt)
    |--------------------------------------------------------------------------
    |
    | You can add major salt to be hashed with password.
    | For example, you can get salt from here: 
    https://www.grc.com/passwords.htm
    |
    | 注意:
    |
    | 记住如果你在有用户注册之后修改此值,之前注册的用户将无法再登录
    |
    */

    $config['DX_salt'] = '';
    /*
    |--------------------------------------------------------------------------
    | 注册相关设置
    |--------------------------------------------------------------------------
    |
    | 'DX_email_activation' = 要求用户注册后激活他们的帐号
    | 'DX_email_activation_expire' = 激活限制时间,超过此时间扔未激活的用户将被从数据库中删除。默认是48小时 (60*60*24*2)。
    | 'DX_email_account_details' = 注册后发送帐号详情的邮件。只在 'DX_email_activation' 为 FALSE 时有效。
    |
    */

     
    $config['DX_email_activation'] = TRUE;
    $config['DX_email_activation_expire'] = 60*60*24*2;
    $config['DX_email_account_details'] = TRUE;
    /*
    |--------------------------------------------------------------------------
    | 登录设置
    |--------------------------------------------------------------------------
    |
    | 'DX_login_using_username' = 设定用户是否可以在用户名表单域使用用户名登录。
    | 'DX_login_using_email' = 设定用户是否可以在用户名表单域使用E-mail登录。
    |
    | 以上两项你必须至少设置一项为True。
    |
    | 'DX_login_record_ip' = 设定当用户登录时是否将其IP保存到数据库。
    | 'DX_login_record_time' = 设定当用户登录时是否记录其登录时间。
    |
    */

    $config['DX_login_using_username'] = TRUE;
    $config['DX_login_using_email'] = TRUE;
    $config['DX_login_record_ip'] = TRUE;
    $config['DX_login_record_time'] = TRUE;
    /*
    |--------------------------------------------------------------------------
    | 自动登录设置
    |--------------------------------------------------------------------------
    |
    | 'DX_autologin_cookie_name' = 设置自动登录所使用的Cookie名字。
    | 'DX_autologin_cookie_life' = 设置自动登录所使用的cookie有效时间。默认为2个月(60*60*24*31*2)。
    |
    */

    $config['DX_autologin_cookie_name'] = 'autologin';
    $config['DX_autologin_cookie_life'] = 60*60*24*31*2;
    /*
    |--------------------------------------------------------------------------
    | 登录尝试
    |--------------------------------------------------------------------------
    |
    | 'DX_count_login_attempts' = 设定当用户登录失败是 DX Auth 是否统计登录失败次数。
    | 'DX_max_login_attempts' = 设定函数 is_login_attempt_exceeded() 返回 TRUE 之前的最大尝试次数。
    |
    */

    $config['DX_count_login_attempts'] = TRUE;
    $config['DX_max_login_attempts'] = 1;
    /*
    |--------------------------------------------------------------------------
    | 忘记密码相关设置
    |--------------------------------------------------------------------------
    |
    | 'DX_forgot_password_expire' = 忘记密码密钥超时时间,默认为 15 分钟(900 seconds)。
    |
    */

    $config['DX_forgot_password_expire'] = 900;
    /*
    |--------------------------------------------------------------------------
    | 验证码
    |--------------------------------------------------------------------------
    |
    | 你可以在此设定由 DX Auth 库生成的验证码。
    | 'DX_captcha_directory' = 创建验证码的目录名称。
    | 'DX_captcha_fonts_path' = 此目录中的字体将被用于验证码的创建。
    | 'DX_captcha_font_size' = 文本写入验证码图片时的字体大小。使用随机大小请留空。
    | 'DX_captcha_grid' = 在验证码图片中显示网格
    | 'DX_captcha_expire' = 验证码超时时间,默认为3分钟(180 seconds)。
    | 'DX_captcha_case_sensitive' = 设定验证码是否区分大小写。
    |
    */

    $config['DX_captcha_directory'] = 'captcha';
    $config['DX_captcha_fonts_path'] = $config['DX_captcha_path'].'fonts';
    $config['DX_captcha_width'] = 320;
    $config['DX_captcha_height'] = 95;
    $config['DX_captcha_font_size'] = '';
    $config['DX_captcha_grid'] = TRUE;
    $config['DX_captcha_expire'] = 180;
    $config['DX_captcha_case_sensitive'] = TRUE;
    /*
    |--------------------------------------------------------------------------
    | reCAPTCHA //此段略
    |--------------------------------------------------------------------------
    |
    | If you are planning to use reCAPTCHA function, you have to set reCAPTCHA key here
    | You can get the key by registering at 
    http://recaptcha.net
    |
    */

    $config['DX_recaptcha_public_key'] = '';
    $config['DX_recaptcha_private_key'] = '';
     
    /*
    |--------------------------------------------------------------------------
    | URI
    |--------------------------------------------------------------------------
    |
    | 设定在 DX Auth 库中用于重定向的 URI
    | 'DX_deny_uri' = 禁止访问 URI.
    | 'DX_login_uri' = 登录表单 URI.
    | 'DX_activate_uri' = 激活用户 URI.
    | 'DX_reset_password_uri' = 重置密码 URI.
    |
    | 去掉'DX_'前缀,这些值可以由 DX Auth 库读取。
    | 例如你可以在控制器中通过使用 $this->dx_auth->deny_uri 访问 'DX_deny_uri'。
    |
    */

    $config['DX_deny_uri'] = '/auth/deny/';
    $config['DX_login_uri'] = '/auth/login/';
    $config['DX_banned_uri'] = '/auth/banned/';
    $config['DX_activate_uri'] = '/auth/activate/';
    $config['DX_reset_password_uri'] = '/auth/reset_password/';
     
    /*
    |--------------------------------------------------------------------------
    | 辅助函数配置
    |--------------------------------------------------------------------------
    |
    | 下面的配置实际上在 DX_Auth 库中并没有用到。
    | 它们只是帮助你在控制器里更容易地编写代码。
    | 如果你不需要它你可以留空,或干脆删掉它。
    |
    | 然而它们可以通过去掉'DX_'前缀在 DX Auth 库中访问。
    | 例如你可以在控制器中通过使用 $this->dx_auth->register_uri 访问 'DX_register_uri'。
    |
    */

    // 注册
    $config['DX_allow_registration'] = TRUE;
    $config['DX_captcha_registration'] = TRUE;
    // 登录
    $config['DX_captcha_login'] = FALSE;
    // URI 路径
    $config['DX_logout_uri'] = '/auth/logout/';
    $config['DX_register_uri'] = '/auth/register/';
    $config['DX_forgot_password_uri'] = '/auth/forgot_password/';
    $config['DX_change_password_uri'] = '/auth/change_password/';
    $config['DX_cancel_account_uri'] = '/auth/cancel_account/';
    // 表单视图
    $config['DX_login_view'] = 'auth/login_form';
    $config['DX_register_view'] = 'auth/register_form';
    $config['DX_forgot_password_view'] = 'auth/forgot_password_form';
    $config['DX_change_password_view'] = 'auth/change_password_form';
    $config['DX_cancel_account_view'] = 'auth/cancel_account_form';
    // 页面视图
    $config['DX_deny_view'] = 'auth/general_message';
    $config['DX_banned_view'] = 'auth/general_message';
    $config['DX_logged_in_view'] = 'auth/general_message';
    $config['DX_logout_view'] = 'auth/general_message';
    $config['DX_register_success_view'] = 'auth/general_message';
    $config['DX_activate_success_view'] = 'auth/general_message';
    $config['DX_forgot_password_success_view'] = 'auth/general_message';
    $config['DX_reset_password_success_view'] = 'auth/general_message';
    $config['DX_change_password_success_view'] = 'auth/general_message';
    $config['DX_register_disabled_view'] = 'auth/general_message';
    $config['DX_activate_failed_view'] = 'auth/general_message';
    $config['DX_reset_password_failed_view'] = 'auth/general_message';

    CodeIgniter DX Auth 插件用户手册 - 模型

    原文:http://dexcell.shinsengumiteam.com/dx_auth/general/models.html

    模型

    DX Auth 库只带有少量模型文件分发,它们位于 'models/dx_auth/' 文件夹中。

    这些模型包含与特定表协同工作的函数。你可以在这些模型中使用这些函数,例如创建一个你自己的管理员面板。这些模型中的函数名也是自解释的,因此用 起来是很容易的。

    下面是在 'models/dx_auth/' 文件夹中包含的模型。

    1. users.php 包含与 'DX_users_table' 表协同工作的函数。
    2. user_profile.php 包含与 'DX_user_profile_table' 表协同工作的函数。
    3. user_temp.php 包含与 'DX_user_temp_table'  表协同工作的函数。
    4. user_autologin.php 包含与 'DX_user_autologin'  表协同工作的函数。
    5. roles.php 包含与 'DX_roles_table' 表协同工作的函数。
    6. permissions.php 包含与 'DX_permissions_table'  表协同工作的函数。
    7. login_attempts.php 包含与 'DX_login_attempts_table' 表协同工作的函数。

    CodeIgniter DX Auth 插件用户手册 - 数据表解析

    原文:http://dexcell.shinsengumiteam.com/dx_auth/general/tables.html

    数据表解析

    这里是 DX Auth 库 安装的数据表,以及对每个表字段的解释。

    users 表

    这是主表,用户信息存在这儿。

    • id = 主键。
    • role_id = 角色表的外键,默认为 1。
    • username = 用户名。
    • password = 用户密码(已加密)。
    • email = 用户E-mail。
    • banned = 设定用户是否已被踢(1 = 被踢 0 = 未被踢)。默认为 0。
    • ban_reason = 被踢原因。
    • newpass = 用户请求重设密码后产生的新密码。
    • newpass_key = 修改密码的密钥。如果此密钥通过了 reset_password() 函数的验证,它将以 'newpass' 的值替代 'password' 的值。
    • newpass_time = 发出重设密码请求时间
    • last_ip = 用户注册时的 IP 地址。以后如果 'DX_login_record_ip' 设置为 TRUE,每当用户登录时其 IP 将记录在此处。
    • last_login = if 'DX_login_record_time' is TRUE, login time will be recorded here.
    • created = Time when this record is created, normally you can use this to determine when user is registered.
    • modified = Time when this record is modified.

    Username field shoudn't contain space and other vulnerable character. Therefore when you validate username in registration, it's highly recommended you use alpha_dash in your form validation.

    user_temp 表

    此表用于存放未激活用户信息。

    id = Primary key.
    username = Username.
    password = User password (encrypted).
    email = User email.
    activation_key = Key needed to activate user. User who activated will be moved to users table.
    last_ip = IP address of user when register.
    created = Date time when this record is created.
    If 'DX_email_activation' is TRUE, people who have registered is inserted into this table instead of users table. If they activate their account, the record will be moved into users table.

    user_profile 表

    此表用于存放用户档案信息。

    id = Primary key.
    user_id = Foreign key to users table.
    Other field is up to you. You can add or delete to fit your needs.

    user_autologin 表

    此表用于当用户登录时保存自动登录变量,使 用自动登录 cookie 验证它。

    • key_id = 主键,key_id 是在用户使用“记住我”登录时生成的唯一字符串。
    • user_id = 主键,使用“记住我”登录的用户 ID。
    • user_agent = User agent of browser when user login using remember TRUE.
    • last_ip = User IP address when user login using remember TRUE.
    • last_login = Time when user login using remember TRUE.

    通常,你不需要改动这个表。

    roles 表

    此表用于记录角色名称,例如 registered user, admin, moderator, 等.

    • id = Primary key.
    • parent_id = Self reference to id. Which mean this role will inherit parent_id role. Default is 0 (No parent).
    • name = 角色名.

    你需要在此表中有至少 2 条记录。

    第一,id = 1 的记录必须以类似 'registered user' 或者类似名字命名。因为用户表有新记录创建时将自动设置 role_id = 1。
    另一条记录的 name 字段值必须为 'admin' (不分大小写)。但它的ID并不重要。

    如果你不准备使用权限特性,你不需要关心 parent_id ,设为 0 即可。否则,你应该在函数指南中查看 check_uri_permissions() 函数以了解有 parent_id 的作用。

    permissions 表

    • id = Primary key.
    • role_id = Foreign key to roles table.
    • data(text) = 权限数据。权限数据以转换为字符串的数组保存。

    check_uri_permission(),  get_permission_value(),  get_permissions_value()  依赖于此表。要设置此数据,你必须使用权限模型中的函数,或者编写你自己的。请参考关于如何设置权限的例子。

    login_attempts table

    此表记录用户的登录尝试。

    • id = Primary key.
    • ip_address = IP address of someone who try to login.
    • time = Time when someone who try to login.

    DX Auth will only use this table when 'DX_count_login_attempts' is set to TRUE in config file. And if login attempts for same IP is more than 'DX_max_login_attempts' in config file, it will not count that IP anymore.

    role_uri table

    Obsolete in 1.0.2 above. Use permissions table.

    CodeIgniter DX Auth 插件用户手册 - 问题处理

    问题处理

    如果你没有弄好 E-mail 设置,DX Auth 库发送邮件可能会失败。

    如果发生了这个,你需要在 application/config/ 文件夹中创建 email.php ,并粘贴上下面的代码。可以修改它以符合你的需求。

    <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
     
    $config['protocol'] = 'smtp';
    $config['smtp_host'] = 'mail.localhost.com';
    $config['smtp_user'] = 'username';
    $config['smtp_pass'] = 'password';
    $config['smtp_port'] = '25';

    关于这个的更多信息,你可以参考 Codeigniter 的E-mail辅助函数。

  • 相关阅读:
    Win10 UWP程序内的文件格式
    第一章
    英语
    BOM
    html基础
    协程
    python
    列表 元组 range
    我的Python学习笔记(四):动态添加属性和方法
    我的Python学习笔记(三):私有变量
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/2305676.html
Copyright © 2011-2022 走看看