gpt4 book ai didi

javascript - Ember-Simple-Auth:如何在ajax请求中注入(inject) token

转载 作者:行者123 更新时间:2023-12-03 08:16:54 26 4
gpt4 key购买 nike

很抱歉这个(也许)愚蠢的问题。我对这个主题非常陌生!

我创建了一个自定义授权者:

    import Ember from 'ember';
import Base from 'ember-simple-auth/authorizers/base';
export default Base.extend({
authorize: function(jqXHR, requestOptions) {
var accessToken = this.get('session.content.secure.token');
if (this.get('session.isAuthenticated') && !Ember.isEmpty(accessToken)) {
jqXHR.setRequestHeader('Authorization', 'Bearer ' + accessToken);
}
}
});

现在我想将 token 包含在 Controller 的 ajax 请求中(这是我的代码,没有发送 token ):

// app/controllers/workouts.js
import Ember from 'ember';
import config from '../config/environment';

export default Ember.Controller.extend({
requestEndpoint: config.ServerIp+'/workouts',
workouts: function() {
Ember.$.ajax({
type: "GET",
url: requestEndpoint
}).success(function(data) {
return data;
})
}.property()
});

非常感谢您帮助和理解这个伟大的模块!

最佳答案

你可以有这样的东西。

在您的授权人中:

// app/authorizers/your-authorizer.js
import BaseAuthorizer from 'ember-simple-auth/authorizers/base';

export default BaseAuthorizer.extend({
authorize(data, block) {
const accessToken = data.accessToken; //Data is the response returned by the server
if (!Ember.isEmpty(accessToken)) {
block('Authorization', `Bearer ${accessToken}`);
}
}
});

适配器将负责将授权 header 添加到您的所有请求中:

// app/adapters/application.js
import DS from 'ember-data';
import DataAdapterMixin from 'ember-simple-auth/mixins/data-adapter-mixin';

export default DS.JSONAPIAdapter.extend(DataAdapterMixin, {
authorizer: 'authorizer:your-authorizer'
});

如果您不使用 ember 数据,您可以看看这个 mixin 的工作方式来创建您自己的适配器:data-adapter-mixin

为了在用户未登录的情况下保护您的路由不被访问,您需要添加经过身份验证的 mixin:

// app/routes/home.js
import AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';

export default Route.extend(AuthenticatedRouteMixin, {
...
});

并且不要忘记设置一些配置

// config/environment.js
...
var ENV = {
...
'ember-simple-auth': {
authenticationRoute: 'login',
routeAfterAuthentication: 'home',
routeIfAlreadyAuthenticated: 'home'
}
}

关于javascript - Ember-Simple-Auth:如何在ajax请求中注入(inject) token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33893079/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com