gpt4 book ai didi

asp.net-mvc - 一起使用不记名 token 和 cookie 身份验证

转载 作者:行者123 更新时间:2023-12-02 09:15:09 26 4
gpt4 key购买 nike

我有一个单页应用程序 - 或多或少基于 MVC5 SPA 模板 - 使用不记名 token 进行身份验证。

该网站还有几个需要保护的传统 MVC 页面,但使用 cookie 身份验证

在 Startup.Auth 中,我可以启用两种类型的授权:

app.UseCookieAuthentication(new CookieAuthenticationOptions());
app.UseOAuthBearerTokens(OAuthOptions);

但是,这似乎有一个副作用,因为每当从 SPA 发送 AJAX 请求时,它都会发送 header 中的不记名 token cookie。

而我真正想要的行为是不记名 token 用于 WebAPI 调用,并且仅 cookie 用于 MVC 调用。

我还希望 MVC 调用在未经授权时重定向到登录页面(设置为 CookieAuthenticationOption),但显然我不希望在进行 API 调用时发生这种情况。

是否有某种方法可以在一个应用程序中进行这种类型的混合模式身份验证?也许通过路径/路由过滤器?

最佳答案

我想我已经解决了这个问题:-

Startup.Auth 正在连接 OWIN 管道,因此在其中包含 Cookie 和 token 是正确的。但对 cookie 选项的一项更改指定了它应适用的身份验证类型:

CookieOptions = new CookieAuthenticationOptions
{
AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie
};

然后我需要将 WebAPI 配置为仅使用 token :

public static void Configure(HttpConfiguration config)
{
// Configure Web API to use only bearer token authentication.
config.SuppressDefaultHostAuthentication();
config.Filters.Add(new HostAuthenticationFilter(OAuthDefaults.AuthenticationType));
}

这似乎达到了我想要的目的。 WebAPI 仅使用不记名 token 而不使用 cookie,并且一些传统的 MVC 页面在登录后使用 cookie(使用 AuthenticationManager)。

关于asp.net-mvc - 一起使用不记名 token 和 cookie 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20953738/

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