相关疑难解决方法(0)

emberjs处理401未经授权

我正在构建一个ember.js应用程序,我挂了认证.json休息后端是rails.每个请求都使用会话cookie(warden)进行身份验证.

当用户首次导航到应用程序根轨道重定向到登录页面时.会话授权后,将加载ember.js应用程序.加载后,ember.js应用程序使用ember-data RESTadapter和会话进行授权,向后端发出请求.

问题是会话将在预定的时间后过期.很多时候,当发生这种情况时,仍然会加载ember.js应用程序.因此,对后端的所有请求都会返回401 {not autorized}响应.

为了解决这个问题,我认为每次从服务器返回401 {not autorized}响应时,ember.js应用程序都需要通过登录模式通知用户.

有谁知道如何监听401 {not autorized}响应并允许用户重新登录而不会丢失任何更改或状态.

我见过其他方法,如令牌授权,但我担心安全问题.

有人有解决这个问题的工作方法吗?

ember.js ember-data rails-api

11
推荐指数
2
解决办法
3437
查看次数

Ember-Data处理401

有关处理401错误的任何想法?

在应用程序初始化程序中,我推迟准备并通过ember-data获取当前用户.如果我收到401应用程序死亡并变得无法使用.我想处理这个错误,然后进行推进.我似乎无法找到解决方法.任何信息,将不胜感激!

请点击这里:https://gist.github.com/unknpwn/6126462

我注意到这里有类似的话题,但似乎已经过时了.

ember.js ember-data

7
推荐指数
1
解决办法
2589
查看次数

我在哪里可以将全局ajax错误处理放在Ember中?

在我的应用程序的适配器中,我将根据ajax错误返回错误代码.我正在应用程序路由的错误方法中处理这些.如果我通过link-to访问路由,这非常有用.但是,如果我刷新路径或只输入URL,则不会调用我的应用程序的错误处理程序.有没有一个地方我可以把这个错误处理保证每次运行?我真的不想在每一条路线中实现相同的"if 401,show login"代码.

路线/ application.js中:

export default Ember.Route.extend({
  actions: {
    error: function(reason) {
        if (reason === 401) {
          alert('401');
            this.send('showLogin');
        }
    },
Run Code Online (Sandbox Code Playgroud)

适配器/ application.js中:

import DS from 'ember-data';

export default DS.ActiveModelAdapter.extend({
    'namespace': '',
  ajaxError: function(jqXHR) {
    var error = this._super(jqXHR);
    if (jqXHR && jqXHR.status === 401) {
        return 401;
    }
    return error;
  }
});
Run Code Online (Sandbox Code Playgroud)

编辑:

上面的代码几乎对我有用.我点击的主要问题是在刷新或点击URL时没有捕到this.send('showLogin').将此更改为转换可以很好地工作:

import Ember from 'ember';

export default Ember.Route.extend(ApplicationRouteMixin, {
  actions: {
    error: function(reason) {
      if (reason === 401) {
        this.transitionTo('login');
      }
    },
    ...
Run Code Online (Sandbox Code Playgroud)

ajax ember-data ember-cli

6
推荐指数
1
解决办法
2595
查看次数

标签 统计

ember-data ×3

ember.js ×2

ajax ×1

ember-cli ×1

rails-api ×1