骨干.js如何跟踪登录用户状态和有关应用程序结构的一般建议

Backbone.js How to track logged in user status and general advice on app structure

本文关键字:结构 应用程序 状态 何跟踪 js 跟踪 用户 登录 骨干      更新时间:2023-09-26

我想知道如何在主干.js应用程序中跟踪当前登录的用户,页面上的大多数视图都需要知道用户是登录还是现在以及哪个用户已登录。实现这一目标的最佳方法是什么?

我在

服务器上有会话管理,但我如何知道我在主干应用程序中处理哪个用户,我怎么知道他是否注销了这就是问题所在

另外,我如何知道用户已使用其他选项卡等注销?应该有一种通用的方式来处理这些东西,就像我们在 rails 中的过滤器之前用来管理这些东西一样。在前端使用什么方法来实现相同的效果。

我目前正在做的是,当我从服务器端设置的主页加载时,html 呈现一个隐藏字段 #current_user_id,我的主干应用程序会读取并设置如下所示的变量

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()

这是主要的显示视图

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') 
   @

上面的代码和设置是否有意义。如果我应该对上述内容进行任何更改,我正在寻找一般建议。

感谢您的宝贵意见

-

-阿比德

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

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

后端返回身份验证令牌。

每个需要身份验证的 REST API 都要求将此令牌作为授权标头通过 HTTPS AJAX 请求发送。 服务器设置为拒绝我们的机制未提供的任何令牌,并拒绝来自我们的服务器未提供服务的页面的任何连接。

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

在开发客户端应用程序时,我也在努力解决身份验证问题。如果您曾经使用过第三方API(Facebook,Twitter),您就会知道所有身份验证都是在服务器端完成的。这就是为什么@Pointy是正确的。客户端不执行身份验证。

因此,如果您希望访问API的安全部分,则必须在每次请求时发送用户名和密码,并在服务器上进行检查。这绝对不是最安全的方法,如果没有HTTPS连接,很少有方法可以解决这个问题。我不确定您正在用哪种语言开发API,但此链接仍然是一个很好的阅读。Steve基本上使用一个简单的协议,客户端在HTTP请求中发送授权令牌作为标头,服务器解码该令牌以确定它是否有效。

在回答您的问题时,我会检查用户是否有效。如果是,请使用身份验证令牌引导用户模型。此身份验证令牌将与需要身份验证的每个 api 请求一起发送和解码。我不是专家,所以如果有其他方法,请告诉我。我也还在学习这个。