骨干.js如何跟踪登录用户状态和有关应用程序结构的一般建议
Backbone.js How to track logged in user status and general advice on app structure
我想知道如何在主干.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 请求一起发送和解码。我不是专家,所以如果有其他方法,请告诉我。我也还在学习这个。
- Redux应用程序结构-在哪里放置服务/业务逻辑
- 使用angularjs和node.js时的Web应用程序文件夹结构
- 应用程序的最佳目录结构 - 节点 + 道场:这行得通吗?
- TypeScript 1.8,多个.ts文件中的单个文件-应用程序结构
- Backbone.js应用程序使用CommonJS结构与node.js和客户端协同工作
- 淘汰js应用程序的正确文件结构是什么
- Web应用程序的体系结构/设计,对另一台服务器进行了大量Ajax调用
- RESTful Web 应用程序中的客户端服务器体系结构
- 如何在node.js应用程序中的mongodb中按层次结构顺序插入数据
- 骨干.js如何跟踪登录用户状态和有关应用程序结构的一般建议
- 我的原生脚本应用程序的最佳结构
- 在 AngularJS 应用程序中形成适当的结构
- 关于具有用户身份验证的 Web 应用程序的结构
- 网站中的单页体系结构或应用程序在 html 导航中使用 servlet 而不打开新页面
- Javascript - Web 应用程序结构
- Node.js & Express - 应用程序结构的全局模块和最佳实践
- 骨干.js : 固定侧板的结构应用程序
- RESTful Backbone 应用程序中 JSON 的预期结构是什么?
- 如何规划新 JS 应用程序的结构
- 全栈应用程序Gulp构建的输出/路径/结构策略