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 cookie 作用范围?不要在当前页面使用你的cookie
Mar 24 PHP
php中长文章分页显示实现代码
Sep 29 PHP
php引用返回与取消引用的详解
Jun 08 PHP
实测在class的function中include的文件中非php的global全局环境
Jul 15 PHP
php实现的zip文件内容比较类
Sep 24 PHP
smarty中post用法实例
Nov 28 PHP
使用xampp搭建运行php虚拟主机的详细步骤
Oct 21 PHP
深入理解PHP变量的值类型和引用类型
Oct 21 PHP
PHP函数nl2br()与自定义函数nl2p()换行用法分析
Apr 02 PHP
CI框架封装的常用图像处理方法(缩略图,水印,旋转,上传等)
Nov 22 PHP
在Yii2特定页面如何禁用调试工具栏Debug Toolbar详解
Aug 07 PHP
thinkphp5 模型实例化获得数据对象的教程
Oct 18 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
CURL的学习和应用(附多线程实现)
2013/06/03 PHP
php实现的九九乘法口诀表简洁版
2014/07/28 PHP
PHP预定义超全局数组变量小结
2018/08/20 PHP
基于jquery实现漂亮的动态信息提示效果
2011/08/02 Javascript
深入理解JavaScript系列(8) S.O.L.I.D五大原则之里氏替换原则LSP
2012/01/15 Javascript
js中传递特殊字符(+,&)的方法
2014/01/16 Javascript
使用jquery.validate自定义方法实现"手机号码或者固话至少填写一个"的逻辑验证
2014/09/01 Javascript
jQuery图片轮播插件——前端开发必看
2016/05/31 Javascript
easyui form validate总是返回false的原因及解决方法
2016/11/07 Javascript
angular实现spa单页面应用实例
2017/07/10 Javascript
微信小程序实现点击返回顶层的方法
2017/07/12 Javascript
轻量级JS Cookie插件js-cookie的使用方法
2018/03/22 Javascript
JS简单获取并修改input文本框内容的方法示例
2018/04/08 Javascript
微信小程序登录时如何获取input框中的内容
2019/12/04 Javascript
Vue双向数据绑定(MVVM)的原理
2020/10/03 Javascript
[02:39]DOTA2国际邀请赛助威团西雅图第一天
2013/08/08 DOTA
精确查找PHP WEBSHELL木马的方法(1)
2011/04/12 Python
Python中的CURL PycURL使用例子
2014/06/01 Python
Django中处理出错页面的方法
2015/07/15 Python
Win7下搭建python开发环境图文教程(安装Python、pip、解释器)
2016/05/17 Python
Python爬虫框架scrapy实现的文件下载功能示例
2018/08/04 Python
django项目环境搭建及在虚拟机本地创建django项目的教程
2019/08/02 Python
HTML5计时器小例子
2013/10/15 HTML / CSS
英国派对礼服和连衣裙购物网站:TFNC London
2018/07/07 全球购物
时尚、社区、科技:SEVENSTORE
2019/04/26 全球购物
静心口服夜广告词
2014/03/20 职场文书
遗体告别仪式主持词
2014/03/20 职场文书
团拜会策划方案
2014/06/07 职场文书
关于有小孩的离婚协议书
2014/10/26 职场文书
采购部年度工作总结
2015/08/13 职场文书
XX部保密工作制度范本
2019/08/27 职场文书
人生哲理妙语30条:淡写流年,笑过人生
2019/09/04 职场文书
Redis调用Lua脚本及使用场景快速掌握
2022/03/16 Redis
Python内置类型集合set和frozenset的使用详解
2022/04/26 Python
vue实现input输入模糊查询的三种方式
2022/08/14 Vue.js
js 实现Material UI点击涟漪效果示例
2022/09/23 Javascript