Codeigniter整合Tank Auth权限类库详解


Posted in PHP onJune 12, 2014

相交其他CodeIgniter的类库,tank_auth,配置简单,使用也简单,并且作者也一直在更新,现在是1.0.9。1.0.8已经支持CI2.0了,我现在一般的项目都是用它,所以推荐给大家。

安装Tankauth的步骤

下载最新版类库(下载地址:http://www.konyukhov.com/soft/tank_auth/tank_auth.zip)

解压文件
将application下相应的文件复制到你的CIapplication文件夹下。
将captcha文件夹复制到你的CI文件夹(项目目录,和application同一个目录)下.并确保该目录在web服务器下可写。
在你的MySQL数据库里安装数据库(schema.sql文件)结构。
在你的CI项目下打开application/config/config.php文件,并且把$config['sess_use_database']的值改为TRUE.
安装完成!

如果访问出现如下错误:

AnErrorWasEncountered
InordertousetheSessionclassyouarerequiredtosetanencryptionkeyinyourconfigfile.

这个错误提示需要一个密钥。那么打开config.php,在$config['encryption_key']后面,随便加一个密钥即可。

TankAuth官网地址:http://www.konyukhov.com/soft/tank_auth/

如果出现了错误,不要忘记看配置文件(tank_auth.php和email.php),安装完成后类库应该可以完美工作了,但是根据你的服务器的条件和你的需要,最好有选择性的修改一下。

提示:默认情况下,类库产生强大的系统特定的密码哈系值是不可移植的,这就是说一旦创建,用户数据库就不能导出并导入到其他数据库中,这个特性也可以通过配置文件修改。

Tankauth类库的简单说明

类库运用了MVC模型,这也就是说所有的数据库相关的方法都封装在了模型(model)文件中,并且类库本身作也为了这些方法的接口。控制器(auth)处相关请求,并调用类库中的方法,渲染相应的视图(view)(显示在浏览器中或以email方式发送)。控制器包含如下的方法:

login:用户登录网站。如果登录成功,并且用户账户是激活的,用户将被重定向到首页。如果未被激活,send_again将被调用(看下面)。如果登录失败,用户将继续留在相同页面(登录页面);
logout:注销用户。
register:注册用户到网站。如果注册成功,将创建一个用户账户。如果在配置文件中的email_activation项的值被设置为TRUE,则用户需要通过点击发送到email中的特殊连接激活账户;否则默认激活。请注意:注册完后用户并没有通过登录验证,仍然需要登录。
send_again:再次发送激活email到相同或者新的email地址。当为激活用户登录是,每次调用这个方法。当用户由于信箱的问题或者错误的emial地址未收到信件时,这个功能是非常有用的。用户可以改变他们的email或者保持不变。
activate:激活用户账户。通常这个方法是通过点击email中的链接调用激活的。可以通过点击”forgotpassword”,输入email来激活账户。用户是通过在URL中的用户的Id和验证码来认证的。
forgot_password:生成特殊的重置码(为了修改密码)并发送给用户。很显然用户在忘记密码的时候才会用到该方法。
reset_password:用一个新的(用户设置的)密码替换旧的(忘记的)密码。这个方法可以通过点击邮件中的连接调用。用户是通过在URL中的用户的Id和验证码来认证的。
change_password:“正常的”密码修改(相比于重置密码)。只能在用户登录并且激活的时候才可调用。为了保证安全,仍然需要验证用户秘密。
change_email:修改用户的email。只能在用户登录并且激活的时候才可调用。为了保证安全,仍然需要验证用户秘密。这个新的email只有通过点击发到这个email中的链接才能被激活。
reset_email:激活新email地址并用一个新的email地址替换。可以通点击邮件中的链接调用该方法。用户是通过在URL中的用户的Id和验证码来认证的。
unregister:删除用户账户。只能在用户登录并且激活的时候才可调用。为了保证安全,仍然需要验证用户秘密。

既然auth控制器管理用户的所以方法(包括登录和注销),所以你未必一定要直接调用类库中的方法。但是下面这些是一定要调用的:

is_logged_in:检测用户是否登录网站。
get_user_id:如果用户登录,获得用户Id,否则返回FALSE。
get_username:获得验证用户的用户名,否则返回FALSE。如果该用户名没有注册,调用这个方法是无意义的(这时候任何用户都将返回一个空的字符串)。

PHP 相关文章推荐
用PHP实现ODBC数据分页显示一例
Oct 09 PHP
PHP下利用shell后台运行PHP脚本,并获取该脚本的Process ID的代码
Sep 19 PHP
PHP的SQL注入过程分析
Jan 06 PHP
PHP验证信用卡卡号是否正确函数
May 27 PHP
PHP计算当前坐标3公里内4个角落的最大最小经纬度实例
Feb 26 PHP
PHP+MySql+jQuery实现的"顶"和"踩"投票功能
May 21 PHP
PHP二维数组矩形转置实例
Jul 20 PHP
PHP面向对象自动加载机制原理与用法分析
Oct 14 PHP
php使用flock阻塞写入文件和非阻塞写入文件的实例讲解
Jul 10 PHP
Laravel 5.5 的自定义验证对象/类示例代码详解
Aug 29 PHP
ThinkPHP框架中使用Memcached缓存数据的方法
Mar 31 PHP
PHP设计模式之外观模式(Facade)入门与应用详解
Dec 13 PHP
PHP错误Cannot use object of type stdClass as array in错误的解决办法
Jun 12 #PHP
php自动识别文件编码并转换为UTF-8的方法
Jun 12 #PHP
codeigniter集成ucenter1.6双向通信的解决办法
Jun 12 #PHP
使用CodeIgniter的类库做图片上传
Jun 12 #PHP
Codeigniter出现错误提示Error with CACHE directory的解决方案
Jun 12 #PHP
Codeigniter注册登录代码示例
Jun 12 #PHP
Codeigniter操作数据库表的优化写法总结
Jun 12 #PHP
You might like
一个显示天气预报的程序
2006/10/09 PHP
php学习笔记 面向对象中[接口]与[多态性]的应用
2011/06/16 PHP
php.ini save_handler 修改不生效的解决办法
2014/07/22 PHP
Yii2.0表关联查询实例分析
2016/07/18 PHP
jQuery中文入门指南,翻译加实例,jQuery的起点教程
2007/02/09 Javascript
用Div仿showModalDialog模式菜单的效果的代码
2007/03/05 Javascript
关于IE7 IE8弹出窗口顶上
2008/12/22 Javascript
javascript下高性能字符串连接StringBuffer类
2010/08/16 Javascript
jquery键盘事件使用介绍
2011/11/01 Javascript
jQuery阻止同类型事件小结
2013/04/19 Javascript
js实现PC端和移动端刮卡效果
2020/03/27 Javascript
JavaScript中offsetWidth的bug及解决方法
2017/05/17 Javascript
JavaScript+HTML5实现的日期比较功能示例
2017/07/12 Javascript
vue异步加载高德地图的实现
2018/06/19 Javascript
Python中列表和元组的使用方法和区别详解
2020/12/30 Python
使用Python实现简单的服务器功能
2017/08/25 Python
详细解读tornado协程(coroutine)原理
2018/01/15 Python
python opencv旋转图像(保持图像不被裁减)
2018/07/26 Python
win8.1安装Python 2.7版环境图文详解
2019/07/01 Python
python如何删除文件中重复的字段
2019/07/16 Python
pytorch的梯度计算以及backward方法详解
2020/01/10 Python
Python OpenCV读取显示视频的方法示例
2020/02/20 Python
Python实现的北京积分落户数据分析示例
2020/03/27 Python
django创建超级用户时指定添加其它字段方式
2020/05/14 Python
Pycharm同步远程服务器调试的方法步骤
2020/11/04 Python
python实现发送邮件
2021/03/02 Python
英国最大的邮寄种子和植物公司:Thompson & Morgan
2017/09/21 全球购物
如何选择使用结构还是类
2014/05/30 面试题
internal修饰符起什么作用
2013/12/16 面试题
关于期中考试的反思
2014/02/02 职场文书
家长对老师的感言
2014/03/11 职场文书
2014第二批党员干部对照“四风”找差距检查材料思想汇报
2014/09/18 职场文书
2014年教研工作总结
2014/12/06 职场文书
大学生自荐材料范文
2014/12/30 职场文书
利用前端HTML+CSS+JS开发简单的TODOLIST功能(记事本)
2021/04/13 Javascript
Pandas-DataFrame知识点汇总
2022/03/16 Python