asp.net framework下webform、webapi和mvc对于文件增加权限校验

webform

新建WebForm
在这里插入图片描述
新建Global.asax

using System;
using System.Web.Routing;

namespace FileAuthStu01
{
   
   
    public class Global : System.Web.HttpApplication
    {
   
   

        protected void Application_Start(object sender, EventArgs e)
        {
   
   
            RouteTable.Routes.RouteExistingFiles = true;

            //如果没有处理则默认还是会走静态文件返回,IgnoreRoute是MVC才有的
            //RouteTable.Routes.IgnoreRoute("Content/{*relpath}");
            RouteTable.Routes.MapPageRoute(
                "ImageRoute",
                "image/imgs/{imageName}",
                "~/ImageHandler.aspx",
                true,
                new RouteValueDictionary {
   
    {
   
    "imageName", "" } });
        }
    }
}

修改web.config

<system.webServer>
	<!-- 确保所有请求都经过ASP.NET的管道处理 -->
	<modules runAllManagedModulesForAllRequests="true" />
	<handlers>
	</handlers>
	<!--设置默认起始页面-->
	<defaultDocument>
		<files>
			<clear />
			<add value="index.aspx" />
		</files>
	</defaultDocument>
</system.webServer>

新建ImageHandler.aspx

using System;
using System.Diagnostics;
using System.IO;
using System.Threading;
using System.Web;


namespace FileAuthStu01
{
   
   
    public partial class ImageHandler : System.Web.UI.Page
    {
   
   
        protected void Page_Load(object sender, EventArgs e)
        {
   
   
            //TODO 验证是否有权限,按照逻辑自己实现
            //方法1 获取jwt等授权信息判断是否有权限查看,适合点击下载事件一般用于POST请求
            //var authData = Request.Headers.Get("Authorization");
            //方法2 将缓存的参数通过query参数写入,实现显示一次就将缓存取消阅后即焚的效果
            //也可以增加一些参数,比如设置图片大小等参数,一般用于GET请求
            string imageName = RouteData.Values["imageName"] as string;
            if (string.IsNullOrEmpty(imageName))
            {
   
   
                //文件不存在
                Response.StatusCode = 404;
                return;
            }
            var imagePath = Server.MapPath($"~/image/imgs/{
     
     imageName}");
            if (!File.Exists(imagePath))
            {
   
   
                //文件不存在
                Response.StatusCode = 404;
                return;
            }
            var fileStream = new FileStream(imagePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

假装我不帅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值