ASP.NET Core 1.1 静态文件、路由、自定义中间件、身份验证简介

夏日蝉鸣 2021-01-21 ⋅ 28 阅读

引言

ASP.NET Core 1.1 是一个跨平台的Web应用程序框架,它以前身ASP.NET的版本升级,具有更高效、更模块化和更易于组织的特点。本文将介绍ASP.NET Core 1.1中的几个重要概念:静态文件、路由、自定义中间件和身份验证,并通过丰富的示例说明它们的用法。

静态文件

静态文件指的是不需要经过处理直接返回给客户端的文件,如HTML、CSS、JavaScript和图像等。ASP.NET Core 1.1提供了静态文件中间件,可以方便地管理和提供静态文件。

添加静态文件中间件

首先,在Startup.cs文件的Configure方法中添加以下代码:

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    app.UseStaticFiles();
    // ...
}

这样就可以将项目中的wwwroot文件夹中的静态文件暴露给客户端。例如,可以通过URL /css/style.css访问项目中的wwwroot/css/style.css文件。

自定义静态文件目录

如果想要将静态文件放在不同的目录中,可以像下面这样进行配置:

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    app.UseStaticFiles(new StaticFileOptions
    {
        FileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), "files")),
        RequestPath = "/files"
    });
    // ...
}

上述代码将静态文件存放在项目根目录下的files文件夹中,并通过URL /files访问。

路由

路由是指将请求映射到相应的处理程序的过程。ASP.NET Core 1.1提供了路由中间件,可以根据不同的URL和HTTP方法将请求分发给不同的处理程序。

添加路由中间件

Startup.cs文件的Configure方法中,添加以下代码启用路由中间件:

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    app.UseMvc();
    // ...
}

控制器和视图中的路由可以通过特性和约定指定,这里以约定为例。

控制器路由约定

Controllers文件夹中创建一个名为HomeController.cs的控制器文件,并添加以下代码:

public class HomeController : Controller
{
    public IActionResult Index()
    {
        return Content("Hello, World!");
    }
}

上述代码表示Index方法对应URL /Home/Index,并返回一个字符串"Hello, World!"。如果想要在根URL直接访问该方法,可以修改Configure方法中的路由配置如下:

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    app.UseMvc(routes =>
    {
        routes.MapRoute(
            name: "default",
            template: "{controller=Home}/{action=Index}/{id?}");
    });
    // ...
}

这样URL /将会映射到HomeControllerIndex方法。

视图路由约定

Views文件夹中的Home文件夹下,创建一个名为Index.cshtml的文件,并添加以下代码:

<h1>Hello, World!</h1>

当请求/Home/Index时,该视图将会返回给客户端。

自定义中间件

中间件是ASP.NET Core 1.1的核心概念之一,用于处理HTTP请求和响应。开发者可以自定义中间件来扩展和定制请求或响应的处理逻辑。

创建自定义中间件

首先,创建一个名为MyMiddleware.cs的类文件,代码如下:

public class MyMiddleware
{
    private readonly RequestDelegate _next;

    public MyMiddleware(RequestDelegate next)
    {
        _next = next;
    }

    public async Task Invoke(HttpContext context)
    {
        // 处理请求逻辑
        await _next(context);
        // 处理响应逻辑
    }
}

配置自定义中间件

Startup.cs文件的Configure方法中,添加以下代码来配置自定义中间件的使用:

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    app.UseMiddleware<MyMiddleware>();
    // ...
}

上述代码表示在请求和响应处理过程中使用MyMiddleware中间件。

身份验证

ASP.NET Core 1.1提供了身份验证中间件,可以非常便捷地进行用户身份验证。这里以使用Cookie进行身份验证为例。

添加身份验证中间件

首先,在Startup.cs文件的ConfigureServices方法中添加以下代码以启用身份验证功能:

public void ConfigureServices(IServiceCollection services)
{
    services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
        .AddCookie(options =>
        {
            options.LoginPath = new PathString("/Account/Login");
            options.AccessDeniedPath = new PathString("/Account/AccessDenied");
        });
}

上述代码配置了使用Cookie进行身份验证,并指定了登录和访问拒绝时的重定向路径。

配置身份验证

Startup.cs文件的Configure方法中,添加以下代码以配置身份验证中间件的使用:

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    app.UseAuthentication();
    // ...
}

上述代码表示在请求处理过程中使用身份验证中间件。

至此,我们已经对ASP.NET Core 1.1中的静态文件、路由、自定义中间件和身份验证进行了简单的介绍。通过合理地使用这些功能,你可以构建出强大、灵活和安全的Web应用程序。


全部评论: 0

    我有话说: