2012-02-08 8 views
1

Я использую программу для моей системы аутентификации, и на главной странице у меня есть экран входа в систему, и он создает пользователей и записывает их в отлично. Но после входа в систему он просто вернется на индексную страницу, тогда как я хочу, чтобы он перенаправлялся на фактическую страницу пользователя, то есть localhost: 3000/user/1. Я хочу, чтобы эта страница отображалась только для пользователя, который был подписан, IE: другие пользователи не могут просматривать профили других пользователей. Если кто-то попытается перейти к let say localhost: 3000/user/2 ... им будет представлен экран входа в систему, и учетные данные должны совпадать с этим пользователем.Не удалось перенаправить на страницу # # пользователя после входа в систему

Я знаю, что это сложный вопрос, но любая помощь была бы полезна.

ответ

2

То, что вы описываете, похоже на то, что вы смешиваете аутентификацию и авторизацию. Я говорю о смешивании, потому что для определения того, разрешаете ли вы пользователю получить доступ/user/1 vs/user/2, для чего предназначена авторизация.

Аутентификация - это процесс определения «вы, кто вы говорите, что вы», тогда как авторизация - это процесс определения «разрешено ли вам, куда вы хотите идти».

Пока вы используете изобрести для проверки подлинности, и вы хотите взглянуть на захват другой gem for Authorization (мое предпочтение канкан.)

Если вы не хотите идти на полный маршрут авторизации (Я бы рекомендовал против этого, но ...) вы можете сделать проверку в контроллере пользователя before_filter, чтобы узнать, есть ли current_user_id == id_from_the_url.

И перенаправлять после авторизации вы хотите использовать DEViSE крючок after_sign_in_path_for который будет выглядеть примерно так:

class ApplicationController < ActionController::Base 
    def after_sign_in_path_for(resource) 
     return user_path(resource) 
    end 
end 

Источник: https://github.com/plataformatec/devise/wiki/How-To:-Redirect-to-a-specific-page-on-successful-sign-in

+0

Я думал о добавлении канкан в мое приложение. Я хотел бы перейти на полный маршрут авторизации, просто не уверен, как я пойдет по этому поводу. Я до сих пор не знаю, как перенаправить после входа на отдельную страницу показа. – RubyNerd

+0

@RubyNerd см. Последнюю часть моего ответа для перенаправления после входа в систему. –

+0

Большое вам спасибо! Теперь он перенаправляется. – RubyNerd

Смежные вопросы