Olá pessoal,
Alguem já usou o SWFUpload juntamente com o VRaptor ???
Se sim, estou começando a implementar agora, poderiam me mandar algum exemplo da action de Upload ???
Valeu!!
Olá pessoal,
Alguem já usou o SWFUpload juntamente com o VRaptor ???
Se sim, estou começando a implementar agora, poderiam me mandar algum exemplo da action de Upload ???
Valeu!!
Olá novamente…
Agora tenho uma duvida um pouco mais complexa e mais direta…
Minha aplicação utiliza uma variavel SessionScoped, a usuarioWeb para verificar as permissões…
Quando estou utilizando o SWFUpload, o flash do upload faz uma chamada para /galeria/upload, só que nesta chamada é criada uma nova sessão… mas eu preciso verificar se o usuário está logado gostaria de saber se alguem pode me ajudar com isto…
Há um modo de eu recuperar Sessions? Ou vou ter de usar cookies ???
Isso eu não sei fazer em Java (sei em C# rs) então gostaria de uma mãozinha 
Obrigado!!!
Att.
Leonardo Lima
vc consegue capturar e setar os headers da requisição no SWFUpload?
se sim, faça pegue o header Set-Cookie que veio, pegue o que vem depois do JSESSIONID, e mande o header Cookie=JSESSIONID=
o problema é q o flash é um cliente diferente do browser, por isso usa sessões diferentes
opa!!
então rsrs boiei um pouco na explicação…
mas uma coisa que posso afirmar sim, consigo enviar o JSESSIONID agora to na parte de restaurar a session com o JSESSIONID que eu mandei se isso é possivel rsrs
vou ver essa parte do header Set-Cookie no google pra ver se eu aprendo 
PS: estou usando o VRaptor 3 rsrs
Tive uma idéia mas parece não estar funcionando sempre…
A idéia era add o ;jsessionid= a minha URL, mas não consegui entender, funcionou uma vez… depois parou 
o cookie tem q ser dinâmico, se vc copiou estático não adianta
Hummm
acredito que deixei dinamico sim...
fiz da seguinte maneira:
upload_url: "
teoricamente está correto não ?
mas mesmo assim parece que não mantem a session, será que o flash é como um navegador diferente ? então acaba não conseguindo recuperar uma session ? rsrs
public class UploadFilter : IFilter
{
public bool Perform(ExecuteEnum exec, IRailsEngineContext context, Controller controller)
{
if (HttpContext.Current.Request.QueryString[".cookieName"] != null)
{
string Cookie = HttpContext.Current.Request.QueryString[".cookieName"].ToString();
string CurrentCookie = context.Request[".cookieName"];
if (CurrentCookie.Equals(Cookie))
{
return true;
}
else
{
return false;
}
}
else
{
// Checks if it is OK
if (context.CurrentUser == null ||
!context.CurrentUser.Identity.IsAuthenticated)
{
controller.Redirect("../signin/login");
return false;
}
else
{
if (context.UnderlyingContext.User.Identity.IsAuthenticated)
{
//Recuperamos o FormsIdentity do Contexto do User.Idetity, para poder recuperar o ticket.
FormsIdentity frms = (FormsIdentity)context.CurrentUser.Identity;
//No Ticket é onde estão armazenadas as informações criptografadas do usuario autenticado.
FormsAuthenticationTicket ticket = frms.Ticket;
string _header = CryptoHelper.Descrypto(ticket.UserData);
string _clienteNome = _header.Split('|')[1];
long _idCliente = long.Parse(_header.Split('|')[0]);
controller.PropertyBag["_clienteNome"] = _clienteNome;
return true;
}
}
}
return true;
}
}
Será que não vou ter de fazer o mesmo no VRaptor ? No caso seria um Interceptor certo ? rsrs acho que to começando a engatinhar rsrs mas ainda to meio sem saber como fazer as coisas rsrs
Obrigado ;)
o flash é como se fosse outro navegador sim…
dá uma olhada no html gerado (veja o source no browser) e veja se o link foi gerado corretamente, com a session.id correta
Opa Lucas…
Fiz o seguinte, coloquei um break point na action que gera a página que chama o script, anotei o JSESSIONID, depois fui no navegador e verifiquei se o que foi renderizado era o mesmo que eu havia anotado… até ai tudo bem…
Mas a minha duvida ficou… se eu tenho um JSESSIONID, ai pego a URL com ele certinho e vou em outro navegador, vai adiantar alguma coisa ? Não né ? Acho que foi por isto que não funfou… se eu não tiver entendido errado seria como se o projeto está aberto no firefox, ai o flash seria um segundo navegador Chrome por exemplo, msmo eu tendo o link certo com o JSESSIONID não vai adiantar né ? ou adiantaria ? pq tbm a Session fica no Servidor ? rsrs
Acho que falei alguma besteira né rsrs
adianta se o flash não mandar os cookies…
se ele manda cookies, vc deveria tentar mexer neles…
esse JSESSIONID deveria ir no header Cookie…
vc consegue mexer nos cookies dentro do flash?
Nopz…
pelo que eu li da documentação do componente não dá não…
Segue o código do exemplo C# deles… tem como fazer igual em Java rsrs ?
<%@ Application Language="C#" %>
<script runat="server">
void Application_BeginRequest(object sender, EventArgs e)
{
/* Fix for the Flash Player Cookie bug in Non-IE browsers.
* Since Flash Player always sends the IE cookies even in FireFox
* we have to bypass the cookies by sending the values as part of the POST or GET
* and overwrite the cookies with the passed in values.
*
* The theory is that at this point (BeginRequest) the cookies have not been read by
* the Session and Authentication logic and if we update the cookies here we'll get our
* Session and Authentication restored correctly
*/
try
{
string session_param_name = "ASPSESSID";
string session_cookie_name = "ASP.NET_SESSIONID";
if (HttpContext.Current.Request.Form[session_param_name] != null)
{
UpdateCookie(session_cookie_name, HttpContext.Current.Request.Form[session_param_name]);
}
else if (HttpContext.Current.Request.QueryString[session_param_name] != null)
{
UpdateCookie(session_cookie_name, HttpContext.Current.Request.QueryString[session_param_name]);
}
}
catch (Exception)
{
Response.StatusCode = 500;
Response.Write("Error Initializing Session");
}
try
{
string auth_param_name = "AUTHID";
string auth_cookie_name = FormsAuthentication.FormsCookieName;
if (HttpContext.Current.Request.Form[auth_param_name] != null)
{
UpdateCookie(auth_cookie_name, HttpContext.Current.Request.Form[auth_param_name]);
}
else if (HttpContext.Current.Request.QueryString[auth_param_name] != null)
{
UpdateCookie(auth_cookie_name, HttpContext.Current.Request.QueryString[auth_param_name]);
}
}
catch (Exception)
{
Response.StatusCode = 500;
Response.Write("Error Initializing Forms Authentication");
}
}
void UpdateCookie(string cookie_name, string cookie_value)
{
HttpCookie cookie = HttpContext.Current.Request.Cookies.Get(cookie_name);
if (cookie == null)
{
cookie = new HttpCookie(cookie_name);
HttpContext.Current.Request.Cookies.Add(cookie);
}
cookie.Value = cookie_value;
HttpContext.Current.Request.Cookies.Set(cookie);
}
</script>
o que vc pode fazer é colocar um token na url, e validar esse token no lado do servidor…
a lógica ficaria sem autenticação, e vc só valida o token…
na lógica do formulário de upload, gere um token e guarde em algum componente application scoped
na url do upload adicione o token na frente
na lógica do upload, pegue o token e verifique se ele está correto nesse componente application scoped
Boa idéia…
vou ver a viabilidade de criar um List de strings acho que é o meio mais rapido 
A noite eu programo mais um pouco rsrs, hj msmo fiz funfar sem auth rsrs
vou terminar o funcional depois volto na perfumaria rsrs
valeu grande mestre!!!