gpt4 book ai didi

c# - 在同一个项目中结合 Authorization.Forms 和 Authorization.Token 的最佳方式?

转载 作者:行者123 更新时间:2023-11-30 20:48:36 29 4
gpt4 key购买 nike

在同一项目中,在 Nancy 中使用任一 token 授权形式保护模块的最佳方法是什么?我需要两种类型的安全性,并且我不希望创建单独的应用程序:一种使用 Form 保护 View ,另一种用于使用 Token 返回 JSON 的 API。

我是 nancy 的新手,我刚刚将一个 MVC 5 应用移植到 nancy。到目前为止,我没有回头! :-)。喜欢简单的方法。

无论如何,我想听听您的想法。

谢谢!

最佳答案

如果您使用 Nancy 和 AngujarJS(例如)创建单页应用程序,您只需要使用 Token 身份验证。 (我推荐这个)

您可以使用此代码在 Bootstrap 中启用这两种方法(此代码用于启用表单例份验证和基本身份验证)

(这可行,但在我看来不是一个优雅的解决方案)

protected override void RequestStartup(TinyIoCContainer container, Nancy.Bootstrapper.IPipelines pipelines, NancyContext context)
{
base.RequestStartup(container, pipelines, context);

var credentials = ExtractCredentialsFromRequest(context);
if(credentials !=null)
context.CurrentUser = container.Resolve<IUserValidator>().Validate(credentials[0], credentials[1]);
}

private string[] ExtractCredentialsFromRequest(NancyContext context)
{
var authHeader = context.Request.Headers["Authorization"].SingleOrDefault();
if (authHeader == null)
return null;

var credentials = authHeader.Split(new[]{':'}, StringSplitOptions.RemoveEmptyEntries);
if (credentials.Length != 2)
return null;

return credentials;
}

还有另一种选择(我从未使用过)是用于 nancy 的 hibryd auth 的 nuget 包

https://www.nuget.org/packages/Nancy.Authentication.HybridStatelessAuthorizationHeaderAndForms/

关于c# - 在同一个项目中结合 Authorization.Forms 和 Authorization.Token 的最佳方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24454639/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com