接上一篇:Meteor项目实战 -- Next 0.0.1

Get things done , and do Next

Next 0.0.2版的目标是账户系统,并把任务与用户关联起来。

首先增加登录所需路由,修改router.coffee,增加如下代码:

Router.route('/login', ->@render("Login")
)

增加对应模板,在client/templates/ 下新建login.html,内容如下:

<template name="Login">welcome login
</template>

Meteor提供了方便好用的账户系统。账户系统的基本功能位于accounts-base包,但通常都会选择直接引入--登录服务提供包,例如:

  • accounts-password
  • accounts-facebook
  • accounts-github
  • accounts-google
  • accounts-meetup
  • accounts-twitter
  • accounts-weibo

引入这些包时会自动引入accounts-base包。

使用第三方登录不仅能让用户省去繁琐的注册流程,还能大大简化开发。考虑到国情,本来打算使用accounts-weibo,但是体验了之后发现,微博的接入流程还需要审核一堆材料,所以我们这里选择引入accounts-github

meteor add accounts-github

观察控制台的输出,我们发现自动添加的依赖包有:

accounts-base          added, version 1.2.0
accounts-github        added, version 1.0.4
accounts-oauth         added, version 1.1.5
github                 added, version 1.1.3
localstorage           added, version 1.0.3
oauth                  added, version 1.1.4
oauth2                 added, version 1.1.3
service-configuration  added, version 1.0.4

然后在 mongo shell 中 show collections; 发现同时多了两个集合:

meteor_accounts_loginServiceConfiguration
meteor_oauth_pendingCredentials

从集合的名字推断:大概是用来保存第三方登录配置和凭证的。

使用第三方登录服务之前,都需要进行一些配置。最简单的方式就是引入另一个包 accounts-ui,它给每一个登录服务提供一个配置向导。

meteor add accounts-ui

然后修改login.html,为

<template name="Login">{{> loginButtons}}
</template>

{{> loginButtons}}accounts-ui包提供的登录UI。

访问登录页,会出现一个configure github login的按钮,点击它,会出现一个向导,按照步骤提示进行配置,然后点击save configuration。

这时候按钮变成了sign in with github。

在mongo shell中执行:

db.meteor_accounts_loginServiceConfiguration.find()

可以看到刚才的配置就保存到了这个集合中。

接下来,我们点击sign in with github。就会跳到github的授权页面,点击同意,就会跳转回登录页,按钮变成了sign out,说明已经成功登录

利用第三方登录服务成功登录后,Meteor会自动在users集合中新建对应的用户,到mongo shell中查询,

db.users.find().pretty()

输出结果类似:

到目前为止一切顺利。接下来调整一些细节,当未登录用户访问时,自动跳转到登录页。修改router.coffee,增加下面代码:

Router.onBeforeAction(->if !Meteor.userId()this.redirect('/login')this.next()
)

现在我们有了账户系统,然后就要把任务和用户关联起来。

首先,新建任务时,同时保存用户的_id字段,修改home.coffee

Template.home.events'submit .form-create-task': (e)->e.preventDefault()$form = $(e.currentTarget)task =name: $form.find('input[name=name]').val()create_time: new Date()important: falseurgent: falseuser_id: Meteor.userId() // 保存用户_id字段....后面代码省略

最后,修改发布,只发布当前用户的任务,修改publish.coffee,

Meteor.publish('tasks', ->Task.find({user_id: @userId})
)

Done! ^_^

Meteor项目实战 -- Next 0.0.2相关推荐

  1. 9大项目实战!tensorflow2.0框架实战(免费资料+干货合集)

    (翻至底部还有超多免费资料+干货合集) 随着PyTorch的不断发展,你是否开始抛弃TF转而向PT发起进攻了呢? 即便现在Pytorch发展迅速,但TensorFlow就像一个定时炸弹,你不知道什么时 ...

  2. SSM项目实战【从 0 到 1】:个人博客

    文章目录 前言 一.项目简介 二.项目技术栈 三.准备工作 1.Spring Boot 项目创建 2.mybatis 配置 3.数据库创建 四.基本框架搭建 1.实体层(model) 2.控制器层(c ...

  3. Android手机应用商城项目,Android手机助手项目实战:从0开发一款自己的应用商店...

    |- 资源.rar – 13.00 kB |- 直播-课时17-直播发起-定位实现.avi – 220.60 MB |- 手机助手课时57-主题详情.avi – 558.30 MB |- 手机助手课时 ...

  4. 前后端分离项目实战(vue2.0 + SSM)

    介绍 前端:vue.js.elementUI.axios.vue-router 后端:SSM(Spring+SpringMVC+MyBatis) 数据库:MySql 运行界面 后端 登录界面 首页以及 ...

  5. OAuth2.0项目实战干货(亚马逊平台对接)

    消息队列的对比-Auth2.0项目实战-亚马逊平台对接 一 OAuth2.0介绍 二 开发背景 三 Auth2.0项目实战***干货 Auth2.0数据流 亚马逊平台: 作为外部第三方平台 内部应用平 ...

  6. Android项目实战(四):ViewPager切换动画(3.0版本以上有效果)

    原文:Android项目实战(四):ViewPager切换动画(3.0版本以上有效果) 学习内容来自"慕课网" 一般APP进去之后都会有几张图片来导航,这里就学习怎么在这张图片切换 ...

  7. 大型电商项目3.0实战+支付宝、微信支付项目实战

    须知:视频来源网络,侵权请联系删除! 大型电商项目3.0实战 获取方式 扫描下面二维码回复:A110 支付宝.微信支付项目实战 获取方式 扫描下面二维码回复:A106

  8. Xamarin.Forms 5.0 项目实战发布!

    活动介绍 本次活动主要是 .NET Xamarin.Forms 移动端项目开发实战教程, 与以往相同, 本次的收入(其它部分会另行说明) 将用于社区公益活动, 不限于: 公益性质的个人/组织机构捐赠 ...

  9. 手把手0基础项目实战(一)——教你搭建一套可自动化构建的微服务框架(SpringBoot+Dubbo+Docker+Jenkins)...

    本文你将学到什么? 本文将以原理+实战的方式,首先对"微服务"相关的概念进行知识点扫盲,然后开始手把手教你搭建这一整套的微服务系统. 项目完整源码下载 https://github ...

最新文章

  1. 解析postgresql 删除重复数据案例
  2. ndk use of undeclared identifier #39malloc#39
  3. Odoo 菜单美化的扩展模块
  4. 海量数据的分库分表技术演进,最佳实践
  5. CUDA程序优化技巧
  6. python最好用的画图工具_python Matplotlib.plot 超好用的画图技巧,总有一条用得到!...
  7. 北京移动联合中兴通讯率先完成SON 4/5G全制式规模部署
  8. redis 3.0.0 linux下载,CentOS7安装配置redis-3.0.0
  9. 计算机文字排版工作过程,计算机文字录入与排版教学计划.doc
  10. 每天一道算法题系列十七之电话号码的字母组合
  11. 计算机硬件故障诊断的原则,电脑硬件故障检测的基本原则
  12. 嵌入式计算机的应用都有哪些,嵌入式系统的应用领域有哪些?
  13. LDAP 中的 RDN
  14. 字符集与比较规则及在Mysql中的应用
  15. mysql主从 主机宕机_MySQL主从宕机的解决方法
  16. IJCAI 2022 | 基于自适应虚词增强的小样本逆关系分类
  17. 手机浏览器APP哪几个值得推荐?为什么?
  18. 使用ADB“推送/提取/安装”文件进手机(华为U8825D)及错误举例
  19. vue-codemirror实现sql和json线上编辑器
  20. 交叉导轨具体应用在哪些领域?

热门文章

  1. MySQL5.7数据库软件下载教程
  2. pip download timeout 下载慢,超时解决方法
  3. js 两个map合并为一个map_ArcGIS API for JS3.x教程二:构建第一个简单的程序
  4. 未定义函数或变量_变量提升:JavaScript是顺序执行,为什么变量在定义之前执行不会报错而是报Underfined...
  5. mysql 两个时间相差大于24小时的数据_MySQL 主从同步延迟的原因及解决办法(仅学习)...
  6. java中final关键字、权限修饰符、内部类(成员内部类、局部内部类、匿名内部类)
  7. Elasticsearch查询性能优化
  8. 为什么不懂技术的人可以做产品经理?
  9. 2021年Q2服饰行业季度洞察报告
  10. 2021年上半年内容型社交电商行业分析报告