從WebSharper 2.5 alpah文檔的遠程組件假定報價:確保WebSharper遠程調用
RPC可調用的方法是安全的由未認證的客戶端從網絡調用。
無論如何要保護遠程通話,以便他們只能從經過身份驗證的客戶端調用嗎?
從WebSharper 2.5 alpah文檔的遠程組件假定報價:確保WebSharper遠程調用
RPC可調用的方法是安全的由未認證的客戶端從網絡調用。
無論如何要保護遠程通話,以便他們只能從經過身份驗證的客戶端調用嗎?
一位在WebSharper網站的樣本是,似乎通過提供返回認證令牌的登錄方法,然後需要調用其他功能來做到這一點聊天應用:
[<Rpc>]
let Login (user: string) : Option<Auth.Token> =
let s = State.Get()
if s.Users.ContainsKey user then
None
else
// (snip)
user |> Auth.Generate |> Some
[<Rpc>]
let Poll (auth: Auth.Token) (time: int) =
// (snip)
完整的聊天示例可以在這裏找到:http://www.websharper.com/samples/Chat
剛剛一直在玩這個自己。原來,如果你使用Forms Authentication,你可以從RPC方法中讀取當前的HTTPContext,所以你可以這樣做:
[<Rpc>]
let protectedMethod() =
match IntelliFactory.WebSharper.Sitelets.UserSession.GetLoggedInUser() with
| Some(username) ->
// User is authenticated... do stuff
()
| None -> failwith "Authentication failed"
當然,傳遞一個認證令牌。 – t0yv0