2011-01-02 16 views
5

Tôi có một sitemap được định nghĩa như thế này trong Boot.scalaLift theo dõi một người dùng đăng nhập

def sitemap() = SiteMap(
     Menu(S ? "Home")/"index", 
     Menu(S ? "Login")/"login", 
     Menu(S ? "Do Logged in Stuff")/"loggedinstuff" >> If(() => loggedInUser.is != Empty, "You must be logged in")) 

Ngoài ra tôi có một loggedInUser quy định tại Boot.scala như thế này

object loggedInUser extends SessionVar[Box[String]](Empty) 

Khi tôi có một người dùng đăng nhập, tôi muốn họ thay đổi loginInUser của tôi thành tên người dùng mà họ đã đăng nhập thành công.

  • Đây có phải là cách tốt để xử lý việc đăng nhập người dùng không?
  • Tôi nên giữ đối tượng loggedInUser ở đâu. Boot.scala? Ở đâu khác?
  • Làm cách nào để cập nhật loggedInUser để bây giờ anh ấy sẽ làm việc để hiển thị trang "loggedinstuff"?
+1

Bạn đã có một nhìn vào tập tin ProtoUser.scala trong các nguồn Lift? ProtoUser cung cấp nhiều hay ít các tính năng tương tự để bạn có thể xem nó được thực hiện như thế nào. – Debilski

Trả lời

1

tôi đã có thể để làm cho nó hoạt động bằng cách làm như ở đây

Scala and Lift and SessionVar that loses it contents

Made đối tượng này

object SessionState { 

    object loggedInUserName extends SessionVar[Box[String]](Empty) 
} 

và sau đó đã

SessionState.loggedInUserName(Full(username))