Oturum verilerini kullanıcı tarayıcısında tutmayı çok seviyorum ama oturum çerezlerinin oyun çerçevesinde çok güvenli olmamasını sevmiyorum. Eğer birileri kurabiyeyi çalarsa, çerezin süresi sona ermediğinden ve çerezin sona ermesi bu yana yardımcı olmadığından siteye kalıcı olarak erişmek için kullanabilir, çünkü eğer birileri çalınmışsa onu tekrar kullanamaz.Daha güvenli bir şekilde daha güvenli Play Scala çerçeve oturumu tanımlama bilgisi aracılığıyla daha kolay uygulanabiliyor
Kullanıcı hala siteyi kullanıyorsa zaman damgasını yenilemek için zaman damgasını güncellemek için 1 saat ve her 5 dakika sonra oturumu sona erdirmek için zaman damgası ekledim.
Ölçeklendirmek ve oyun oynamak için oldukça yeniyim, bu nedenle her türlü öneri veya daha iyi bir yol elde etmek için çok daha fazla takdir edilecektir.
trait Secured {
def withAuth(f: => String => Request[AnyContent] => Result) = {
Security.Authenticated(username, onUnauthorized) { user =>
Action(request => {
val sessionRolloverPeriod = 300
val sessionExpiryTime = 3600
val sessionCreationTime: Int = request.session("ts").toInt
val currentTime = System.currentTimeMillis()/1000L
if(currentTime <= (sessionCreationTime + sessionExpiryTime)) {
if(currentTime >= (sessionCreationTime + sessionRolloverPeriod)) {
f(user)(request).withSession(request.session + ("ts" -> (System.currentTimeMillis()/1000L).toString))
} else {
f(user)(request)
}
} else {
Results.Redirect(routes.Auth.login()).withNewSession
}
}
)
}
}
}
Çerezler her 5 dk üretti:
The cookies produced every 5min:
Cookie:PS="a6bdf9df798c24a8836c2b2222ec1ea4a4251f301-username=admin&ts=1381180064"
Cookie:PS="D7edg7df709b54B1537c2b9862dc2eaff40001c90-username=admin&ts=1381180380"
Şifreler oturum çerezini oynatır, böylece son kullanma zaman damgasını eklemek güvenlidir. Doğru yapıyorsun, sunucu tarafı oturumuna gerek yok. – lambdas
Aynı şeyi yapmayı düşünüyorum ama bunun içinde bir kusur görüyorum. F (kullanıcı) (istek) araması oturumu zaten değiştirmişse ne olur? Bu durumda, isteğin oturumunu değişiklik için temel olarak kullandığınızda, bu değişikliği kaybedersiniz, değil mi? – agabor
Sadece merak ediyorum: neden bu "rollover" özelliğine ihtiyacınız var? Her bir onaylanmış isteğinizdeki zaman damgasını güncellemek yeterli olmaz mı (tabii, süresi dolmamışsa)? – Martin