i built my own login system, but unfortunately, i am having problems
(ie, can''t really figure out how) to redirect a person back to the page
he was requesting before logging in...say, as the admin i want to edit a
certain message/logo, whatever, so i click on it, and i get redirected
to my login page. after the admin logs in, he gets redirected to the
homepage - i couldn''t figure out how to redirect to the page he
requested...
my loggin system is this:
APPLICATION CONTROLLER:
def secure
redirect_to :controller => ''login'' unless @session[:admin]
== 1
end
-------------------
in my LOGIN CONTROLLER:
def authenticate
pswd = [ ''shai'', ''octava'']
@input = [ "#{params[:user][:name]}",
"#{params[:user][:password]}" ]
if pswd == @input
@session[:admin] = 1
flash[:notice] = ''successful entry.''
redirect_to :controller => ''messages'' ####THIS IS WHAT
I NEED TO
FIX
else
@session[:admin] = 0
flash[:notice] = ''?????? ??????, ??? ??? ????.''
redirect_to :action => ''login''
end
end
-------------------
(i put the secure method in any action i wish to protect, and walla!,
everythings good)(except the redirecting issue)
i know the answer should be something like @session[:url_path] = xyz,
and then redirect in the authenticate action to @session[:url_path], but
the problem is, i''m not really sure what the xyz part is (that stores
the current url the person is on) and i aint really sure what the
correct syntax for doing this is...
if anyone has an answer, clue, or just plain sympathy, i''ll be ready;
thanks.
hola,
shai
octava
--
Posted via http://www.ruby-forum.com/.
> redirect_to :controller => ''messages'' ####THIS IS WHAT I NEED TO > FIXredirect_back_or_default is probably what you want. check acts_as_authenticated for a use case. it only seems to actualy redirect back when your access to a page was ''interrupted'' for needing login, say youre on a page that normal users can only view, and special users can additioanlly delete or add items, if you click on a link to /account/login youll never come back to that page after logging in, unless im missing something.. -- Posted via http://www.ruby-forum.com/.
anonymous coward
2006-Jun-01 06:41 UTC
[Rails] Re: how can i redirect a person after a login
-========detailed=========- this is the way the admin is redirected: --------- def secure redirect_to :controller => ''login'' unless @session[:admin] == 1 end --------- and then i implement the secure method in any one of the actions i want to protect, such as ''edit'': def edit secure ... end and then, when a person who is on the page http://localhost:3000/messages wants to edit a message, say http://localhost:3000/edit/3, he will automaticly be redirected to http://localhost:3000/login/login, where in this action there will be a user, and pswd field, and if he enters them correctly (which you can see in the authenticate action, is ''shai'' and ''octava'') he will be redirected to :controller => ''messages'' (above where i wrote ''#WHERE I NEED TO FIX''). this is the place i need to somehow, (if possible??), insert some kind of a parameter/variable that will give me the path/url/action-conroller/whatever of the last page visited before the ''redirection'' to the login page = = = i.e, after entering the user+pswd, get redirected back to (examply obviously) http://localhost:3000/edit/3. is there any way to do this?? (ps thanks for the reply) shai -- Posted via http://www.ruby-forum.com/.
I think a better to do is with before_filter call back function. for example def secure redirect_to :controller => ''login'' unless @session[:admin] == 1 end Then in your edit controller class EditController < ApplicationController before_filter :secure, :except => :login #except is a method that doesn''t require login (you can put more in the except) ........ Hope this helps :) Victor -- Posted via http://www.ruby-forum.com/.