前端集合 - 关注前端技术和互联网免费资源

关注前端技术和互联网免费资源

分类儿

页面儿

搜索儿

前端集合 RSS订阅
Home » 经验记录 » ThinkJS入门学习实例(2)

ThinkJS入门学习实例(2)

发布者:前端集合 // 发布时间:2015-02-04 15:11:00 // 分类:经验记录 // 访问: 9,666 次 // 热度:

ThinkJS入门学习实例

完整示例代码:

四、登录验证、显示登录用户名和注销

ThinkJS的控制器有个初始化init方法: 在init方法里判断是否已经登录,并且把这个promise返回,后续的action执行则是在这个then之后执行。

下面说说具体代码:

在App/Lib/Controller/Admin/增加一个BaseController.js:

init: function (http) {
    this.super('init', http);
    /**
     * 其他的通用逻辑
     */
    //login请求不判断当前是否已经登录
    if (this.http.action === 'login') {
        return;
    }

    var self = this;
    return self.session('userInfo').then(function (userInfo) {
        //用户信息为空
        if (isEmpty(userInfo)) {
            //ajax访问返回一个json的错误信息
            if (self.isAjax()) {
                return self.error(403);
            } else {
                //跳转到登录页
                return self.redirect('login');
            }
        } else {
            //用户已经登录
            self.userInfo = userInfo;
            self.assign('userInfo', userInfo);
        }
    });
}

这样,当你进入后台任何一个页面时,都会先检测你是否登录,如果没有登录,则跳转到/admin/index/login页面;如果已经登录,则保存session登录信息,以供具体的页面调用。

假设你要在后台首页admin/index/index显示登录的用户名,则可以这么做:

//首页
indexAction: function () {
    var userInfo = this.userInfo;
    var self = this;

    if (!isEmpty(userInfo)) {
        self.assign({'title': '管理-首页', 'user': userInfo});
        return self.display();
    }
}

然后在模版中显示即可:

<h4>当前登录用户:<%= user.name %>,<a href="logout">注销</a></h4>
//注销
logoutAction: function () {
    var self = this;
    self.session('userInfo', '');
    self.redirect('login');
}

注销后跳转到登录页面。

未完待续。。。

水平有限,如果文章有啥错误,还请不吝赐教 :)

Tags: thinkjs, thinkjs教程, thinkjs实例, thinkjs实例教程

ThinkJS入门学习实例(3)>>  << ThinkJS入门学习实例(1)
Top