2015-10-13 1 views
0

Я пытаюсь внедрить систему аутентификации в уголек со следующими версиями:аутентификация с использованием уголек-простой-аутентификации-разработки и рельсы бэкенд

DEBUG: ------------------------------- 
ember.debug.js:5378 DEBUG: Ember     : 1.13.7 
ember.debug.js:5378 DEBUG: Ember Data    : 1.13.8 
ember.debug.js:5378 DEBUG: jQuery     : 1.11.3 
ember.debug.js:5378 DEBUG: Ember Simple Auth  : 0.8.0 
ember.debug.js:5378 DEBUG: Ember Simple Auth Devise : 0.8.0 
ember.debug.js:5378 DEBUG: ------------------------------- 

Я следовал инструкциям на GitHub для https://github.com/simplabs/ember-simple-auth/tree/master/packages/ember-simple-auth-devise

сейчас когда я ударил «подписаться» он возвращает ошибку 500:

POST http://localhost:4200/users/sign_in 500 (Internal Server Error) 

Я чувствую, что он должен идти на локальный: 3000/пользователей/sign_in, но это не так.

Я запустил сервер командой ember s --proxy http://localhost:3000, но не понимаю, что происходит.

Вот мой код для справки:

контроллера/login.js

import Ember from 'ember'; 
import LoginControllerMixin from 'simple-auth/mixins/login-controller-mixin'; 

export default Ember.Controller.extend(LoginControllerMixin, { 
    authenticator: 'simple-auth-authenticator:devise' 
}); 

маршрутов/login.js

import Ember from 'ember'; 
import UnauthenticatedRouteMixin from 'simple-auth/mixins/unauthenticated-route-mixin'; 

export default Ember.Route.extend(UnauthenticatedRouteMixin); 

шаблонов/application.hbs

<h2 id="title">Welcome to Ember.js - With Authentication!</h2> 

{{#if session.isAuthenticated}} 
    Hi, {{session.email}} 
    <br/> 
    You can't see this text unless you're logged in! 
    <br/> 
    Click this button to logout: 
    <button {{action 'invalidateSession'}}>Logout</button> 
    <br/> 
    If you try to go to the 
    {{#link-to "login"}}Login{{/link-to}} 
    page, you should get redirected! 
{{else}} 
    {{#link-to "login"}}Login{{/link-to}} 
{{/if}} 

{{outlet}} 

шаблоны/login.hbs

<form {{action "authenticate" on="submit"}}> 
    <div> 
     <label for="identification">E-mail</label><br /> 
     {{input value=identification placeholder="E-mail" type="text" name="email"}} 
    </div> 

    <div> 
     <label for="password">Password</label><br /> 
     {{input value=password placeholder="Password" type="password" name="password"}} 
    </div> 

    <div> 
     <button type="submit">Log in</button> 
    </div> 
</form> 

конфигурации/environment.js

... 
    ENV['simple-auth'] = { 
    authorizer: 'simple-auth-authorizer:devise' 
    } 

    ENV['simple-auth-devise'] = { 
    tokenAttributeName: 'token', 
    identificationAttributeName: 'email' 
    } 
... 

Мои рельсы маршрутов выглядит следующим образом:

devise_for :users, controllers: { sessions: 'sessions' } 
+0

действительно ли запрос достигает бэкэнда Rails? – marcoow

+0

Да, он возвращает, 'ActionController :: RoutingError (Нет маршрутов соответствует [POST]"/users/sign_in "):' (добавлен мой маршрут разработки выше) –

+0

Это означает, что маршрут '/ users/sign_in' не настроен в приложении Rails это ошибка 500 – marcoow

ответ

1

В вашем routes.rb файл вам может понадобиться добавление на: 'пользователей', как маршрут по умолчанию, созданный при разработке для sign_in, равен http://ip_address_to_your_server/sign_in, а для создания вашего настраиваемого URL-адреса, например http://localhost:3000/users/sign_in, вам нужно сопоставить его с «пользователями». Результирующий код будет выглядеть

devise_for :users, at 'users',controllers: { sessions: 'sessions' } 

Таким образом, вы сможете вызвать SessionsController в/пользователей

Надежда это помогает. В противном случае, пожалуйста, подумайте о размещении кода, реализованного на вашем брандмауэре, потому что проблема в конце Rails.