问题标签 [saturn-framework]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
91 浏览

f# - 带有 Saturn 框架的 JSON 类型提供程序`Controller.getModel` 不工作

我在让我的类型与 Saturn 和 JSON 类型提供程序一起工作时遇到了一些麻烦。

我的类型:(由 typeprovider 生成)

我在Controller.createAction 中的代码:

我希望智能感知适用于inputModel.Feature.Name,但事实并非如此。我已经验证了类型。如果我直接使用它,FeatureModel.GetSample()它会显示属性/字段。

知道我错过了什么或做错了什么吗?

0 投票
0 回答
263 浏览

f# - 如何使用“onunload”事件向 SAFE Stack 中的服务器发送消息?

我有一个使用 SAFE 堆栈构建的应用程序,其中活动客户端在服务器端具有相应的对象。当用户关闭他们的浏览器窗口时,我希望向服务器发送一条消息以删除该对象。

我正在尝试像这样使用“onunload”事件:

我将其添加到订阅中:

消息以通常的 Elmish 方式处理,并通过 api 转发到服务器。但是,我发现消息很少到达服务器端。我可以做些什么来使它更可靠吗?还是有更好的替代方法?

0 投票
0 回答
146 浏览

asp.net-core - 土星或长颈鹿应用程序如何使用 Windows 身份验证?

我对土星和长颈鹿很陌生。我正在尝试将 saturn Web 应用程序配置为对 Intranet 应用程序使用 Windows 身份验证 - 最终我想使用 IIS 运行它。在 asp.net 的旧世界中它是微不足道的,但在 saturn(giraffe(asp.net core)) 世界中似乎并非如此,至少目前不是。Windows 身份验证在土星或长颈鹿中似乎不太流行。请参阅此谷歌请求:https ://www.google.com/search?q=f%23+saturn+giraffe+%22windows+authentication%22 。

我发现这篇文章非常接近我想要使用 asp.net 核心网络应用程序实现的目标。我需要跳到长颈鹿或土星(我从土星开始——如果我想不通,我会下降一级)。这篇文章也很有用:Add a button for google signin using f#/fable/asp.net/react

有什么建议么?

我在 VS 2019 中注意到的一件有趣的事情是,当我尝试创建基于 F# 的 Asp.net Core Web 应用程序时,我无法更改向导最后一页上的身份验证。Authentication 下的 Change 按钮被禁用。但是,如果我选择 C# 作为基础语言,我可以做到。

谢谢

0 投票
1 回答
293 浏览

asp.net-core - 如何在 saturn 应用程序中访问和使用用户机密

编辑:以下是对 Koenig Lear 答案的一些改编,以防其他人偶然发现这个问题:

为了向应用程序添加用户机密,我使用了此代码,其中使用的 IDconfig.AddUserSecrets是使用 .fsproj 添加到 Server.fsproj 的机密 ID dotnet user-secrets init

然后可以通过以下方式在路由器中使用秘密:

原始问题:

我正在努力思考如何访问用户机密,但我无法完全翻译microsoft 提供的示例

假设我让 Saturn 在 SAFE 堆栈环境中运行(在这种情况下很可能无关紧要)。我有一个 webApp,它接受一个连接字符串,然后使用提供的连接字符串处理请求以进行数据库访问:

和一个用户密码,其中包含我使用以下方式启动的连接字符串dotnet user-secrets set

和一个application使用路由器的:

我想做的是以某种方式提取用户密码并将其传递给路由器。我似乎不明白的是在哪里以及如何执行 ASP.NetCore 通常执行的依赖注入(请参阅通过Configuration APIMS Docs 示例中的用户密码配置的位置。)。

与我想做的非常接近的是示例中的这一部分

第一个问题是我找不到如何获取Configuration包含该GetConnectionString 方法的对象。但即使我能做到这一点,我也会通过monadservice_config中的操作来配置这一部分,对吧?application但是后来我无法将获得的连接字符串用于路由器,因为use_router 操作与它分开。

我在 netcoreapp/asp.netcore 3.1 上使用 Saturn 0.14.1。

任何形式的帮助将不胜感激!

0 投票
0 回答
274 浏览

f# - Saturn 的 .NET SDK 要求

遵循土星的“如何开始”指南时:

https://saturnframework.org/tutorials/how-to-start.html

第 4 步说运行:

这是在我的系统上运行它的结果:

我看到了一些前进的方向:

  • 安装 .NET SDK 版本 3.1.200(即使我已经有 3.1.405)

  • 将 global.json 更新为以下内容:

  • 将 global.json 更新为以下内容(允许比 3.1.200 更新的版本):

哪些会推荐给土星?

更新

看起来有一个关于这个问题的拉取请求:

https://github.com/SaturnFramework/Saturn.Template/pull/29

更新 2021-02-10

上面提到的拉取请求并不理想,因为它需要特定版本的 .NET SDK。

我已经提交了一个拉取请求以使用该rollForward选项:

https://github.com/SaturnFramework/Saturn.Template/pull/31

0 投票
2 回答
249 浏览

oauth - 具有 github 授权的安全堆栈

我试图将我的整个应用程序隐藏在身份验证后面(我将在此工作时处理授权),现在我希望每个 url 都需要 github 登录。我没有打开 github 登录页面。

我尝试将SAFE-stack 模板"Using OAuth with Saturn"结合​​起来,但我没有得到 github 登录页面(我只在遵循 Saturn 指南时得到),我只是得到了正常的待办事项页面。如果我单击添加按钮,服务器会打印

并且该项目不会添加到待办事项列表中。

除了身份验证位之外,我已经尝试删除所有内容,并且与干净的安全模板相比,我所做的唯一更改是

  1. dotnet paket add Saturn.Extensions.Authorization --project src/Server/Server.fsproj
  2. 手动降级两个依赖项paket.lock,否则会产生错误:Microsoft.AspNetCore.Authentication.Googleto(3.1.11)Microsoft.AspNetCore.Authentication.OpenIdConnectto(3.1.11)
  3. app将值更改Server/Server.fs为以下(我为此问题创建了一个新的 github auth 应用程序):

我的 gitHub 应用配置认证回调 url:http://localhost:8080/signin-github

0 投票
1 回答
103 浏览

f# - Process.start 用于启动浏览器,但现在已弃用

如果我阅读土星的“如何开始”指南:

https://saturnframework.org/tutorials/how-to-start.html

当我运行最后一步时:

网络服务器确实似乎启动了。我可以访问 http://localhost:8085/books 并查看生成的应用程序。

但是,如果我在控制台上按 ctrl-c 来停止网络服务器,我会注意到以下内容:

在此处输入图像描述

如果我查看build.fsx,它包含以下行:

目标内Run

所以看起来Run目标的意图是为我们启动一个浏览器。

上面输出中的警告表明:

Fake 文档中的Just start a process页面有一些示例。离开这些,我使用更改build.fsx来使用以下行:

这似乎确实有效。

几个问题:

  • 这是实现此类目标的推荐方法吗?
  • 以上只能在 Windows 上运行。是否有一种跨平台的方法可以使用 Fake 使用浏览器打开 URL?

笔记

如果您决定阅读 Saturn“如何开始”指南,我建议您global.json在第 3 步之后删除该文件。默认文件当前查找特定版本的 .NET SDK。有一个拉取请求可以解决这个问题。

谢谢!

0 投票
1 回答
52 浏览

f# - Saturn Value restriction error when module is in separate file

When I move UiRoutes module into a separate file it gives me an error when compiling. This is the first time using Saturn and Giraffe so I'm not sure what is happening? What is the difference having the module in a separate file?

The error I get is: "Value restriction. The value 'uiRouter' has been inferred to have generic type\n val uiRouter : (HttpFunc -> '_a -> HttpFuncResult) when '_a :> AspNetCore.Http.HttpContext \nEither make the arguments to 'uiRouter' explicit or, if you do not intend for it to be generic, add a type annotation."

Program.fs

Solution:

0 投票
1 回答
41 浏览

f# - 土星路由器 - getf 和 get 的相同功能?

应该是一个简单的问题,但我找不到详细说明如何执行此操作的 API 文档。

我有这样的控制器功能

还有一个路由器,它定义了两条使用该功能的路由。一个将默认值 0 传递给number参数。另一个允许用户指定一个数字

这给出了错误

我知道这是一个简单的缺失,但不知道是什么。

干杯