F# 保护WebSharper远程调用的安全

F# 保护WebSharper远程调用的安全,f#,websharper,F#,Websharper,引用WebSharper 2.5 alpah文档,远程处理组件假定: RPC可调用方法可以安全地由未经身份验证的客户端从web调用 是否有办法保护远程调用,以便只能从经过身份验证的客户端调用远程调用?WebSharper网站中的一个示例是一个聊天应用程序,它提供了一个登录方法,返回身份验证令牌,然后调用其他功能需要该方法: [<Rpc>] let Login (user: string) : Option<Auth.Token> = let s = State.G

引用WebSharper 2.5 alpah文档,远程处理组件假定:

RPC可调用方法可以安全地由未经身份验证的客户端从web调用


是否有办法保护远程调用,以便只能从经过身份验证的客户端调用远程调用?

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)
[]

让我们登录(用户:string):选项

我自己刚刚在玩这个。事实证明,如果使用表单身份验证,则可以从RPC方法内部读取当前的HTTPContext,以便执行以下操作:

[<Rpc>]
let protectedMethod () =
  match IntelliFactory.WebSharper.Sitelets.UserSession.GetLoggedInUser() with
  | Some(username) ->
    // User is authenticated... do stuff
    ()
  | None -> failwith "Authentication failed"
[]
让protectedMethod()=
将IntelliFactory.WebShapper.Sitelets.UserSession.GetLoggedInUser()与
|一些(用户名)->
//用户已通过身份验证。。。做事
()
|无->失败,带有“身份验证失败”

当然,传递身份验证令牌。