неинициализированная константа SessionsController :: User - PullRequest
0 голосов
/ 16 апреля 2020

Я пытаюсь написать систему входа в систему для моего приложения на Rails, но получаю ошибку сессий. Для большего контекста у меня нет пользовательского класса, но есть класс EmployeeAuthentication и Employee, в котором есть мои методы входа.

В настоящее время здесь находится мой session_controller.rb

class SessionsController < ApplicationController
   def new
  end

  def create
    user = User.authenticate(params[:username], params[:password])
    if user
      session[:user_id] = user.id
      redirect_to home_path, notice: "Logged in!"
    else
      flash.now.alert = "Username and/or password is invalid"
      render "new"
    end
  end

  def destroy
    session[:user_id] = nil
    redirect_to home_path, notice: "Logged out!"
  end
end

А вот мой файл маршрутов:

Rails.application.routes.draw do

  # Semi-static page routes
  get 'home', to: 'home#index', as: :home
  get 'home/about', to: 'home#about', as: :about
  get 'home/contact', to: 'home#contact', as: :contact
  get 'home/privacy', to: 'home#privacy', as: :privacy
  get 'home/search', to: 'home#search', as: :search

  # Resource routes (maps HTTP verbs to controller actions automatically):
  resources :employees
  resources :stores
  resources :assignments
  resources :users
  resources :sessions

  # Custom routes
  patch 'assignments/:id/terminate', to: 'assignments#terminate', as: :terminate_assignment

  # You can have the root of your site routed with 'root'
  root 'home#index'


  get 'user/edit' => 'users#edit', :as => :edit_current_user
  get 'signup' => 'users#new', :as => :signup
  get 'login' => 'sessions#new', :as => :login
  get 'logout' => 'sessions#destroy', :as => :logout


end

1 Ответ

0 голосов
/ 17 апреля 2020

Вы пишете аутентификацию с нуля для образовательных целей? Если нет, то лучше не «изобретать велосипед». Аутентификация и ее близкий родственник Авторизация имеет дело конкретно с безопасностью вашего приложения, и вы не должны оставлять эту безопасность в ваших руках (особенно если вы никогда не писали полную систему аутентификации с нуля в прошлом и не проверяли ерунду из нее).

При создании приложений на Rails я склонен использовать гем devise для аутентификации и гем cancancan для авторизации. Эти два драгоценных камня существуют почти столько же, сколько Rails, и они испытывались и тестировались на протяжении многих лет, они являются проверенными безопасными вариантами реализации аутентификации и авторизации в ваших веб-приложениях.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...