Używamy aplikacji internetowej (serwer błyszczący, gdzie kodowanie odbywa się w R) i chcemy dodać do niej warstwę uwierzytelniania. Zamiast budować coś, aby to zrobić w R, myślałem o użyciu meteoru do tworzenia tokenów autoryzacji i tak dalej. ten sposób myślałem to zrobić:tokeny autoryzacji, pamięć lokalna i meteor
- użytkownik loguje się z meteor i meteor tworzy wpis w bazie danych, który wygląda mniej więcej tak:
{ "createdAt" : 1372521823708, "_id" : "HSdbPBuYy5wW6FBPL", "services" : { "password" : { "srp" : { "identity" : "vKpxEzXboBaQsWYyJ", "salt" : "KRt5HrziG6RDnWN8o", "verifier" : "8d4b6a5edd21ce710bd08c6affb6fec29a664fbf1f42823d5cb8cbd272cb9b2b3d5faa681948bc955353890f645b940ecdcc9376e88bc3dae77042d14901b5d22abd00d37a2022c32d925bbf839f65e4eb3a006354b918d5c8eadd2216cc2dbe0ce12e0ad90a383636a1327a91db72cf96cd4e672f68544eaea9591f6ed102e1" } }, "resume" : { "loginTokens" : [ { "token" : "t9Dxkp4ANsYKuAQav", "when" : 1372521823708 } ] } }, "emails" : [ { "address" : "[email protected]", "verified" : false } ] }
- użytkownik jest przekierowany do "starej aplikacji". Tutaj możemy sprawdzić pamięci lokalnej (powinno być takie samo przechowywanie lokalne jak meteor jeśli używamy tego samego hosta na zewnątrz budynku i portu, prawda?) i znaleźć te informacje:
Meteor.loginToken: t9Dxkp4ANsYKuAQav Meteor.userId: HSdbPBuYy5wW6FBPL
- Miejscowy przechowywania danych jest zbadane przez "inną aplikację" i wykonuje proste zapytanie do bazy danych względem meteor db, aby sprawdzić, czy informacje o lokalnej pamięci są zgodne z tym, co jest w bazie danych. Być może sprawdź także datę ważności. Jeśli to się zgadza, aplikacja renderuje, w przeciwnym razie nie.
Czy jest to przyzwoicie bezpieczny sposób na zrobienie tego? Czy uda się współdzielić pamięć lokalną między aplikacjami?
To wydaje się rozsądnym podejściem, ale trzeba uważać na ograniczenia domeny i ścieżki na Twoich ciasteczek: http: //en.wikipedia. org/wiki/HTTP_cookie # Domain_and_Path. –
Dokładnie podchodziłem do tego podczas pracy z Meteorami i rozszerzeniami przeglądarki. –
Może to być dla mnie pakiet shinyStore, który pozwala na używanie (opcjonalnie zaszyfrowane) lokalnego magazynu od Shiny: https://github.com/trestletech/shinyStore –