Я использую Angular и Devise для своего webapp, и у меня небольшая проблема. Я не хочу, чтобы пользователь посещал определенные части приложения, если они не before_action :authenticate_user!
в систему, поэтому я использую before_action :authenticate_user!
в моем приложении application_controller.rb.
Я использовал router-ui для маршрутизации пользователей на #home, когда они посещают страницу, http://localhost: 3000/users/sign_in #/home
$stateProvider
.state('home', {
url: '/home',
templateUrl: '../assets/angular-app/templates/_home.html.haml',
controller: 'mainCtrl',
resolve: {
postPromise: ['posts', function(posts){
return posts.getAll();
}]
}
})
решение получает все сообщения из моей базы данных и выводит их на главную страницу. Но когда пользователь не зарегистрирован в файле JSON, выдается ошибка авторизации 401, так как он не вошел в систему.
Какой был бы лучший способ исправить эту проблему?
В контроллере, когда вы извлекаете сообщения, вы должны пропустить authenticate_user!
фильтр для действия, которое отвечает на запрос.
class YourController < ApplicationController
skip_before_action :authenticate_user!, only: :your_action
def your_action
# the action which retrieves posts
end
...
end