当前位置: 首页 > 知识库问答 >
问题:

Emberjs身份验证会话不工作

禹智渊
2023-03-14

我遵循了认证教程,但遇到了一些问题。

import AuthManager from 'lms/config/auth_manager';

var SessionNewController = Ember.ObjectController.extend({

attemptedTransition : null,
loginText : 'Log In',

actions: {
    loginUser : function() {
        var self = this;
        var router = this.get('target');
        var data = this.getProperties('identity', 'password');
        var attemptedTrans = this.get('attemptedTransition');

        $.post('http://rest.api/login',
            data,
            function(results) {
                console.log(results.session);
                console.log(results.user_id);
                AuthManager.authenticate(results.session, results.user_id);
                if(attemptedTrans) {
                    attemptedTrans.retry();
                    self.set('attemptedTransition', null);
                } else {
                    router.transitionTo('index');
                }
            }
        )
    }
}


});

export default SessionNewController;
Object {success: "user login success", session: "2OmwKLPclC.YhYAT3745467my7t0m2uo", user_id: "1"}
import User from 'lms/models/user';
import Application from 'lms/adapters/application';
var AuthManager = Ember.Object.extend({

    init: function() {
        this._super();
        var accessToken = $.cookie('access_token');
        var authUserId = $.cookie('auth_user');
        if(!Ember.isEmpty(accessToken) || !Ember.isEmpty(authUserId)) {
            this.authenticate(accessToken, authUserId);
        }
    },

    isAuthenticated: function() {
        return !Ember.isEmpty(this.get('ApiKey.accessToken')) && !Ember.isEmpty(this.get('ApiKey.user'));
    },

    authenticate: function(accessToken, userId) {
        $.ajaxSetup({
            headers: { 'Authorization': 'Bearer ' + accessToken }
        });
        var user = User.store.find(userId);
        console.log(user);
        this.set('ApiKey', ApiKey.create({
            accessToken: accessToken,
            user: user
        }));
    },

    reset: function() {
        this.set('ApiKey', null);
        $.ajaxSetup({
            headers: { 'Authorization': 'Bearer None' }
        });
    },

    apiKeyObserver: function() {
        Application.accessToken = this.get('apikey.accessToken');
        if (Ember.isEmpty(this.get('ApiKey'))) {
            $.removeCookie('access_token');
            $.removeCookie('auth_user');
        } else {
            $.cookie('access_token', this.get('ApiKey.accessToken'));
            $.cookie('auth_user', this.get('ApiKey.user.id'));
        }
    }.observes('ApiKey')
});

export default AuthManager;
Uncaught TypeError: Object function () {
    if (!wasApplied) {
      Class.proto(); // prepare prototype...
    }
    o_defineProperty(this, GUID_KEY, undefinedDescriptor);
    o_defineProperty(this, '_super', undefinedDescriptor);
    var m = met...<omitted>...e' new.js:23
(anonymous function) new.js:23
jQuery.Callbacks.fire jquery.js:1037
jQuery.Callbacks.self.fireWith jquery.js:1148
done jquery.js:8074
jQuery.ajaxTransport.send.callback jquery.js:8598

它不能将变量传递给导入的函数。

共有1个答案

乌杰
2023-03-14

终于成功了。我所做的错误是在扩展auth_manager.js上的ember.object.extend()之后,我没有在任何地方创建对象。这就是为什么它不能设置、创建cookie并抛出错误消息。

我所要做的就是在扩展对象之后,.create()。

不知道是不是正确的方法。但肯定管用。

 类似资料:
  • 电话身份验证失败,出现以下异常: PlatformException(ERROR_SESSION_EXPIRED,sms代码已过期。请重新发送验证码重试。,null) 但如果我使用的电话号码不同于我的电话号码,它就会起作用。我从play store中添加了SHA-1和SHA-256指纹到firebase,并替换了google-services.json。 这是我的代码:

  • 在身份验证等情况下,与会话相比,使用JWTs有什么优势? 它是作为独立方法使用还是在会话中使用?

  • 我正在使用Vert。后端为x,前端为AngularJS。 Vert. x服务器使用POST和GET方法接收HTTP操作。不知何故,我为每个请求获取不同的会话ID。 以下是来自我的LoginFormHandler类句柄例程的代码片段。 我正在将用户对象放入当前会话中。然后我移动到新页面并向Vert. x服务器发送POST请求。在那个POST处理程序中,我正在尝试获取会话对象: 我没有得到用户。此外,

  • 我正在尝试根据Laravel5.3中的API对用户进行身份验证。它不起作用。一旦用户在登录后重定向,身份验证就不会持久。 路由配置如下: 在LoginController.php我正在使用 成功保存在文件中的登录后,路由的会话不会启动。 所以在路径上:

  • TL;DR:成功登录并重定向到后,我被控制器的中间件踢回(

  • keytool-list-v-keystore my_keystore.jks