Backbone.js的如何跟踪登录的用户的状态和一般建议在应用结构(Backbone.js How

2019-09-18 05:11发布

我想知道我怎么可以跟踪登录的用户在Backbone.js的应用程序目前,大部分的页面上的意见需要知道,如果用户登录或现在被记录在哪个用户,什么是最好的方法实现这一目标?

我有服务器会话管理,但我怎么知道哪个用户正在我在骨干的应用程序处理,我如何知道,如果他退出这就是问题

还有我怎么知道该用户已注销使用其他选项卡等? 应该有处理这个东西一个通用的方法,就像我们之前在轨过滤器来管理这样的事情。 使用什么方法来实现对前端相同。

什么我目前做的是,当我从服务器端设置的主页加载HTML渲染的隐藏字段#current_user_id,其中我骨干应用程序读取和设置变量,如follwoing

window.MyApp =
  Models: {}
  Collections: {}
  Views: {}
  Routers: {}
  currentUser: null
  init: -> 
    @currentBusiness = $('#current_business').val()
    new MyApp.Routers.Businesses
    Backbone.history.start()

$(document).ready ->
  MyApp.init()

然后我的路由器设置一个ShowView然后设置页面上跌宕其他子视图

class MyApp.Routers.AppRouter extends Backbone.Router
  routes:
    '': 'show'

  show: ->
    user = new Vocallocal.Models.user id: Vocallocal.currentBusiness
    Vocallocal.currentBusiness = business
    new Vocallocal.Views.BusinessesIndex model: business
    business.fetch()

这里是主ShowView

class MyApp.Views.ShowView extends Backbone.View 

  el: '#main'
  template: JST['users/home'] 

  initialize: ->
    @model.bind 'change', @render, @
    @details = new Vocallocal.Views.UserDetails model: @model 
    @logo = new Vocallocal.Views.UserLogo model: @model 
    @managePhotos = new Vocallocal.Views.ManagePhotos model: @model 

  render: -> 
    console.log('change has occured') 
   @

确实上面的代码和设置很有意义。 我期待在一般的意见,如果我应该做上述任何改变。

谢谢您的宝贵意见

--Abid

Answer 1:

我还作战开发客户端应用程序包时,我的头周围的认证。 如果你曾经使用第三方提供的API(Facebook,微博)的工作,你会知道,所有的认证是在服务器端完成。 这就是为什么@Pointy是正确的。 没有进行身份认证客户端。

所以,如果您想访问你的API的安全,您的用户名和密码必须与每个请求发送,并在服务器上进行检查。 这绝对不是最安全的方式,也有极少数的方式来解决这个问题,而不HTTPS连接。 我不知道用什么语言你正在开发的API,但还是这个链接是一个很好的阅读。 史蒂夫基本上使用一个简单的协议,从而客户端发送的授权令牌作为HTTP请求的报头,并且所述服务器记号来决定它是否是有效的解码。

在回答你的问题,如果用户是有效的我会检查。 如果他/她,引导用户模型验证令牌。 该身份验证令牌将被发送和解码的要求身份验证每个API请求。 我不是专家,所以如果有任何其他的方式,请让我知道。 我也还在学习这一点。



Answer 2:

我们的应用程序是一个完全分离的客户机/服务器API架构,包括登录。

当用户进行身份验证,并与我们的服务器授权我们发送与通过HTTPS连接的相关数据的JSON请求(这意味着由于CORS和IE浏览器,我们的后台,我们的前端必须来自同一站点提供服务)。

后端返回一个身份验证令牌。

每需要认证的REST API需要此令牌将被沿着作为一个授权报头通过HTTPS AJAX请求发送。 服务器设置为拒绝不是由我们的机制提供的任何标记,并拒绝来自未通过我们的服务西弗斯页面的任何连接。

我们在储存在客户端的cookie,这个身份验证令牌。 如果身份验证令牌无效,丢失等,我们的服务器会返回一个HTTP 401如果它发生在客户端,我们捕获并重定向到登录页面。



文章来源: Backbone.js How to track logged in user status and general advice on app structure