У меня есть приложение Rails 3.2, для которого требуется вход пользователя (current_user) для доступа к страницам событий, которые являются субдоменами. Я использую программу для аутентификации.Как разрешить незарегистрированным пользователям доступ к странице с ограниченным доступом только один раз?
Есть ли способ разрешить пользователю единовременный доступ к странице событий, если я предоставил прямую ссылку на него? Затем я хотел бы, чтобы у них было предложено войти (или зарегистрироваться), если они попытаются получить доступ к различным страницам событий, или если они уйдут и вернутся в будущем на ту же страницу событий.
Я наблюдал за эпизодом учетной записи гостя на railscasts, но кажется, что пользователь может просто продолжить вход в систему в качестве гостя, не регистрируясь при таком подходе.
Вот мой код события контроллер:
def show
@event = Event.find_by_name(request.subdomain)
if params[:id].present?
@event = Event.find(params[:id])
end
# if @event.present? and @event.videos.present?
@video = Video.find_by_id(params[:video]) || @event.videos.first
# else
# @video = @event.videos.first
# end
# @json = Event.all.to_gmaps4rails
if @user = current_user
else
flash[:alert] = "Please sign in first"
redirect_to sign_up_url(:subdomain => false)
end
end
Спасибо за любую помощь/совет ...
EDIT: Просто чтобы обеспечить более некоторый контекст:
Я буду пытаясь водить много пользователей на эту страницу событий каждую неделю, и я не уверен, что возможно/практично жестко выделить отдельные хэши в URL-адреса, если я просто отправлю одну ссылку через социальные сети и электронную почту и т. д.
Поскольку пользователи нажмут на эту ссылку и перейдут прямо к рассматриваемой странице, никаких действий не будет создано для создания отдельной гостевой модели, поэтому я думаю, что ответ должен быть основан на сеансе, добавив несколько столбцов в существующей модели пользователя, но при условии, что она используется только один раз для каждого пользователя. Я думаю, может быть, ip-адрес будет работать?
Как установить 'current_user'? Вы используете Devise для аутентификации? – zeantsoi
Да, я использую devise для установки current_user – jfdimark
Понял. Пожалуйста, см. Мое предлагаемое решение ниже. – zeantsoi