Все еще может получить доступ к действию контроллера в Asp.Net Core 2.1 без входа в систему - PullRequest
0 голосов
/ 29 августа 2018

Вот мой Startup.cs:

public void ConfigureServices(IServiceCollection services)
{   
    services.AddMvc();
}

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
        app.UseBrowserLink();
        app.UseDatabaseErrorPage();
    }
    else
    {
        app.UseExceptionHandler("/Home/Error");
    }
    app.UseOptions();

    app.UseStaticFiles();

    app.UseRewriter(new RewriteOptions().AddIISUrlRewrite(env.ContentRootFileProvider, "urlRewrite.config"));

    app.UseAuthentication();

    app.UseMvc(routes =>
    {
        routes.MapRoute(
            name: "default",
            template: "{controller=Account}/{action=SignIn}");
    });
}

Когда пользователь запускает веб-сайт, он отправляется на страницу входа, которая принимает свое имя пользователя и пароль, а затем вызывает действие контроллера как таковое:

[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Login(LoginViewModel model, string returnUrl = null)
{
    ViewData["ReturnUrl"] = returnUrl;
    if (ModelState.IsValid)
    {
        // This doesn't count login failures towards account lockout
        // To enable password failures to trigger account lockout, set lockoutOnFailure: true
        var result = await _signInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, lockoutOnFailure: false);
        if (result.Succeeded)
        {
            _logger.LogInformation(1, "User logged in.");

            //send to New Page
            return RedirectToAction("Index", "New");

        }
    }

    // If we got this far, something failed, redisplay form
    return View(model);
}

Это действительно так просто. Новый Контроллер - Удар, и Действие Индекса отправляет пользователя к правильному Представлению. Давайте просто скажем, что Action не выполняет проверку и просто возвращает связанный View.

Если я добавлю декоратор [Authorize] к этому действию, я перенаправлюсь на страницу входа с «? ReturnUrl = New / Index» в конце.

Наконец, если я просто войду в WebsiteUrl / New / Index без входа в систему, я могу загрузить View.

Чего мне не хватает? Как будто я добавил страницу входа без реальной функциональности.

...