![](/img/trans.png)
[英]ASP.NET Core MVC database does not add an object after redirecting
[英]Prevent redirecting ASP.NET Core MVC Application after start
我在 Visual Studio 2017 中创建了一个带有 Azure 身份验证的 ASP.NET MVC Core 2 应用程序。
我也在 Azure 上注册了该应用程序。
现在我单击 Ctrl+F5 从 Visual Studio 2017 启动应用程序。
我希望看到主页,但它重定向到https://login.microsoftonline.com/blablablabla
但我希望它仅在用户单击Sign in时重定向。
对于Asp.Net Core MVC 2.0
内置模板,用于[Authorize]
启用访问[HomeController]
安全请求。
对于Asp.Net Core MVC 2.1
内置模板,在Startup
使用[Authorize]
和AuthorizeFilter
。
对于您的场景,您大多属于第二种情况。
请按照以下步骤操作:
从HomeController
删除[Authorize]
。
//[Authorize] public class HomeController : Controller { public IActionResult Index() { return View(); }
删除services.AddMvc
AuthorizeFilter
services.AddMvc(options => { //var policy = new AuthorizationPolicyBuilder() // .RequireAuthenticatedUser() // .Build(); //options.Filters.Add(new AuthorizeFilter(policy)); }) .SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
要停止重定向,您首先需要找到导致重定向的原因。 您通常可以通过两种方式触发登录请求 -
用[Authorize]
属性装饰你的类/方法,这将强制登录请求。
发出如下所示的明确挑战..
return Challenge( new AuthenticationProperties { RedirectUri = redirectUrl }, OpenIdConnectDefaults.AuthenticationScheme);
我没有看到有关您有问题的代码的足够详细信息......告诉您确切地进行更改以停止重定向的位置,但我可以猜测最可能的原因并向您展示示例。
这是 ASP.NET 核心示例的示例,它具有显式登录操作,代码可在 GitHub 上获得。
将 Azure AD 集成到 ASP.NET Core Web 应用程序中
具体来说,查看 AccountController 以了解如何强制登录。
[Route("[controller]/[action]")]
public class AccountController : Controller
{
[HttpGet]
public IActionResult SignIn()
{
var redirectUrl = Url.Action(nameof(HomeController.Index), "Home");
return Challenge(
new AuthenticationProperties { RedirectUri = redirectUrl },
OpenIdConnectDefaults.AuthenticationScheme);
}
此外,为了确保我可以在不被强制登录的情况下看到主页,我只是对 HomeController.cs 的示例代码进行了简单的更改。 我从 HomeController 中取出了[Authorize]
属性,该属性存在于 GitHub 的原始代码中。 (否则您将在启动应用程序后立即强制登录)
namespace WebApp_OpenIDConnect_DotNet.Controllers
{
// notice there is no [Authorize] attribute now, to make landing page available without signin
public class HomeController : Controller
{
public IActionResult Index()
{
return View();
}
现在,如果有人明确单击顶部的登录链接,则只会提示他们输入凭据。 只要确保您的主页上不需要任何敏感信息,因为它现在可供所有人使用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.