2012-05-20 39 views
7

开始学习backbone.js和require.js。backbone.js + require.js +用户认证

不确定如何使用用户身份验证为Web应用程序构建文件。

看来它应该流是这样的:

  1. 在应用程序初始化,查询服务器检查身份验证会话状态;
    • 问题1:我应该在哪里写'init'后的会话代码 - in /js/app.js?我是否应该为此使用jQuery ajax,或者是否有更好的backbone.js方法(我已经在例子中看到了对get(),fetch(),toJSON()的引用)?
  2. 如果成功,请将验证数据存储在模型(user_id,username,auth_token)中。
    • 问题3:我如何启动此模型以便我可以在整个模块中访问数据?即。我将看到显示“isLoggedIn.html”的模板,该模板将显示“Hello%username%!Logout”。我想从这个模型中访问'用户名'字段。目前,我只看到如何通过在视图的define []中引用它来创建新模型,所以我不知道如何访问在init中创建的模型。
  3. 将使用jQuery $ .cookies保存并获取此验证数据,因此如果用户离开页面并返回,我可以查询服务器来检查会话而不是要求用户再次登录。
    • 问题4:如何将jquery.cookies.js插件包含到此requirejs应用程序中,以便我可以像往常一样使用$ .cookies?我是否应该将此插件添加到define []列表中?我必须将其添加到/js/jquery/loader.js文件吗?

谢谢您的帮助。

编辑:我使用modular-backbone示例创建我的网络应用程序的文件。所以当我在谈论/js/app.js和js/router.js时,这就是我所指的文件。

+1

对于Q3:您是否可以创建用户模型,然后在构建这些视图时将它传递给相关视图? –

+0

另外,你是什么意思,你只能在定义中引用它时创建一个新模型?发布该模型的代码片段? –

+0

我正在使用模块化骨干结构。所以在我的app.js中,我创建了'var credentials = new authModel()'。根据我的理解,我必须在登录视图中访问这个'credentials' var。但凭证不是全局变量,因此在登录视图中,凭证为空 - 没有看到任何数据。 – codemonkey613

回答

2

我也处于同样的状况。 我发现this post,看起来在每次请求之前做一些事情的最佳选择是使用this solution

在访问和除了/ login之外的URL之前,我要通过cookie进行身份验证或运行登录视图。

关于包括其他文件夹(jQuery的饼干)的方式 - 只使用require.js机制:

  1. 在你的主文件“require.config” - >“路径”添加插件位置(jqueryCokkie :)
  2. 在视图下的“定义”添加路径名(“jqueryCookie”),并把它传递给finction
  3. 的.js文件应在following structure(我想在这里粘贴代码示例,但有问题...)。