那么,首先可以明确的就是四张表:user表,auth_rule表,auth_group表,auth_group_access表。
user表

auth_rule表

auth_group表

auth_group_access表

然后就是在你的项目配置文件中添加配置代码,以下是我的(表前缀有配置过就可以省略)
//Auth配置
'AUTH_CONFIG' => array(
// 用户组数据表名
//'AUTH_GROUP' => 'tp_group',
// 用户-用户组关系表
//'AUTH_GROUP_ACCESS' => 'tp_group_access',
// 权限规则表
//'AUTH_RULE' => 'tp_rule',
// 用户信息表
'AUTH_USER' => 'user'然后在项目Common文件夹下创建Controller文件夹,并创建AuthController.class.php.代码如下namespace Common\Controller;
use Think\Controller;
use Think\Auth;
class AuthController extends Controller {
protected function _initialize() {
$sess_auth = session('auth');
if (!$sess_auth) {
$this->error('非法访问!正在跳转登录页面!',U('Login/index'));
}
if ($sess_auth['uid'] == 1) {
return true;
}
$auth = new Auth();
if(!$auth->check(MODULE_NAME.'/'.CONTROLLER_NAME.'/'.ACTION_NAME, $sess_auth['uid'])){
$this->error('没有权限');
}
}然后就是在项目Controller创建LoginController,class.phpnamespace Admin\Controller;
use Think\Controller;
class LoginController extends Controller
{
/*
* 用户登录
*/
public function index(){
if (IS_POST) {
$login = M('User');
$uname = $_POST['username'];
$pwd = $_POST['password'];
$res = $login->where("username='" . $uname . "' AND password='" . md5($pwd) . "'")->find();
if (count($res)) {
session('auth', $res);
$this->success('登录成功!', U('Index/index'));
} else {
$this->error('用户名或密码错误!');
}
} else {
$this->display();
}
}
/*
* 退出登录
*/
public function logout()
{
session('[destroy]');
$this->success('退出成功!', U('Login/index'));
}最后就是IndexController,class,phpnamespace Admin\Controller;
use Common\Controller\AuthController;
class IndexController extends AuthController {
public function _initialize(){
parent::_initialize();
}
public function index(){
$this->display();
}
}请注意继承,LoginController和AuthController直接继承Controller,IndexController则继承AuthController。还有命名空间也要注意
以上实例只是一个简单的增删改查的规则认证,虽然我也是对我发的代码一脸懵逼(因为是我自己百度出来的)。毕竟Auth.class.php的源码我还没有理解透彻。不过我还是希望我贴出来的东西能帮到大家。。。
最佳答案