主页 > 知识库 > Asp.Net二级域名共享Forms身份验证、下载站/图片站的授权访问控制

Asp.Net二级域名共享Forms身份验证、下载站/图片站的授权访问控制

热门标签:陕西人工外呼系统哪家好 浙江外呼系统怎么安装 山西防封卡电销卡套餐 上海杨浦怎么申请申请400电话 厦门商铺地图标注 云南外呼电销机器人系统 地图标注多个行程 海外地图标注门市标 铜川小型外呼系统运营商
一般大家对小文件的解决办法是直接在服务端读取文件,然后输出,这样就避免了文件地址的暴露,这是一种解决办法。而我现在想说的是使用 TransmitFile 方法直接输出文件,但是这个方法对大文件的支撑力度有多少,以及会带来多大的性能开销,我还没有测试过,有兴趣的朋友可以测试下,并发表评论。

好了,进入正题,一般对下载站,大家想到的就是流量的问题,所以自动就想到应该把文件与程序代码分开部署。所以我给文件单独做了一个二级域名,我们就叫 file.xxx.com 吧。主网站域名就是 www.xxx.com了,或者其他二级域名都行。

那第一步就是先要实现这2个站点之间的身份验证共享了,比如登陆了主站后自动分站就实现登录了,那.Net的Forms身份验证很容易的就能实现这个功能,底层思路其实就是共享Cookie的原理。第二部就是给文件站做权限过滤。下面我们给主站以及文件站同时添加web.config。给他们加入相同的配置,Web.config主要配置代码如下:
复制代码 代码如下:

?xml version="1.0" encoding="UTF-8"?>
configuration>
connectionStrings>
/connectionStrings>
appSettings>
/appSettings>
system.web>
authentication mode="Forms">
forms loginUrl="~/Home/LogOn" defaultUrl="/" timeout="600" slidingExpiration="true" name="File" path="/" enableCrossAppRedirects="true">/forms>
/authentication> httpCookies domain=".xxx.com"/>
machineKey validationKey="AAA977D304FB289C182E00C710A099C9F92986DC25AD69F8" decryptionKey="AAA2B3F76A9359431E717CA8275EE72EEEDC70ED55152010" validation="SHA1"/>
/system.web>
!--此节点只需加到文件站下--> system.webServer>
handlers>
add name="*.*" path="*.*" verb="*" type="Web.Handler.Download" />
/handlers>
/system.webServer>
/configuration>

以上配置文件针对跨域访问的几个关键配置点:一:authentication的name要相同,path="/" 表示cookie存储路径为根域名,enableCrossAppRedirects="true" 表示身份验证是否可以重定向到其他应用程序。二:httpCookie节点配置为顶级域名。三:两个站点的machinekey必须相同。 那针对权限控制,通过实现.Net里面的访问过滤器,也就是IHttpHandler接口,用来拦截访问。实现方法也很简单,只要实现ProcessRequest方法就可以了,下面是我的代码:
复制代码 代码如下:

namespace Web.Handler
{
/// summary>
/// 文件下载登陆验证
/// /summary>
public class Download : IHttpHandler
{
public bool IsReusable
{
get
{
return true;
}
}

public void ProcessRequest(HttpContext context)
{
if (context.User.Identity.IsAuthenticated)
{
string fileName = context.Server.MapPath(context.Request.FilePath);
context.Response.ContentType = Path.GetExtension(fileName);
context.Response.TransmitFile(context.Request.FilePath);
}
else
{
context.Response.Write("您未登录!");
}
}
}
}

写完以上代码后,那就是增加过滤配置了,注意上面的配置文件注释,最主要的配置节:add name="*.*" path="*.*" verb="*" type="Web.Handler.Download" /> name是筛选器的名称,随便填,path表示你要过滤的文件后缀,我是所有文件都需要过滤,所以直接用*.*,如果单纯只过滤jpg跟gif,可以改为:*.jpg,*.gif 即可,type表示过滤器Dll地址,也就是我们实现IHttpHandler的类全名,ok,文件访问控制就已经完成了。 注意:由于我使用的是IIS7,所以此处的Handler添加到了system.webSever节点下,IIS6及以下版本直接添加到system.web节点下就可以了。
您可能感兴趣的文章:
  • 浅谈asp.net Forms身份验证详解
  • 详解ASP.NET MVC Form表单验证
  • 关于C#.net winform程序验证moss的集成身份认证实例
  • ASP.NET Internet安全Forms身份验证方法
  • asp.net forms身份验证,避免重复造轮子
  • asp.net 基于forms验证的目录角色权限的实现
  • asp.net Forms身份验证和基于角色的权限访问
  • asp.net 特定目录form验证
  • ASP.net Forms验证Demo
  • .net MVC使用IPrincipal进行Form登录即权限验证(3)

标签:自贡 朔州 信阳 西双版纳 孝感 许昌 常州 莱芜

巨人网络通讯声明:本文标题《Asp.Net二级域名共享Forms身份验证、下载站/图片站的授权访问控制》,本文关键词  Asp.Net,二级域名,共享,Forms,;如发现本文内容存在版权问题,烦请提供相关信息告之我们,我们将及时沟通与处理。本站内容系统采集于网络,涉及言论、版权与本站无关。
  • 相关文章
  • 下面列出与本文章《Asp.Net二级域名共享Forms身份验证、下载站/图片站的授权访问控制》相关的同类信息!
  • 本页收集关于Asp.Net二级域名共享Forms身份验证、下载站/图片站的授权访问控制的相关信息资讯供网民参考!
  • 推荐文章