TP3.2简单的AUTH规则认证

浏览:7040 发布日期:2016/06/23 分类:技术分享 关键字: ThinkPHP3.2.3完整版 AUTH规则认证
数据库表什么的都是Think/Auth.class.php中给的,所以也就不做过多赘述了。
那么,首先可以明确的就是四张表: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的源码我还没有理解透彻。不过我还是希望我贴出来的东西能帮到大家。。。
最佳答案
评论( 相关
后面还有条评论,点击查看>>