From: ke.han <ke...@re...> - 2005-12-11 13:43:16
|
I have the following login scenario which is initially patterned after that in the yaws manual: 1 - User logs on via signin.yaws which calls signin_post.yaws for validation. 2 - signin_post.yaws redirects back to signin.yaws if validation is not successful. 3 - after the redirect, signin.yaws needs to display the error message that was generated in signin_post.yaws. This is the problem. My attempt at solving this is to set a value in (Arg#arg.headers)#headers.other as part of my redirect return from signin_post.yaws. You can see this at the end of my signin_post.yaws code. My signin_post.yaws is as follows: --- begin signin_post.yaws --- <erl module="signin_post_yaws"> -include("user.hrl"). kv(K, L) -> {value, {K, V}} = lists:keysearch(K, 1, L), V. out(A) -> L = yaws_api:parse_post(A), UserId = kv("userId", L), Password = kv("password", L), case userMgr:validate(UserId, Password) of {ok, UserId2} -> S = #session{userId = UserId2}, Cookie = yaws_api:new_cookie_session(S), SigninSuccessUrl = "/search.html", [{redirect_local, SigninSuccessUrl}, yaws_api:setcookie("myAppCookie",Cookie)]; {error, ErrorMsg} -> [{redirect_local, "/signin.yaws"}, {header, f("signinError: ~p", [ErrorMsg])}] end. </erl --- end signin_post.yaws --- This simply does not work. The redirect works, but I have inspected the resultant header and my code {header, f("signinError: ~p", [ErrorMsg])} doesn't seem to effect the header. Prior to trying this, I was hoping to set Arg#state for subsequent access, but I cannot find anything in the yaws_api or out(A) return values that allows me to set this state info. Any ideas? thanks, ke han |