如何限制存放在网站子文件夹里的图片,只供通过了验证的会员浏览?
如何限制存放在网站子文件夹里的图片,只供通过了验证的会员浏览?
我们正在做一个OA系统。有很多图片涉及到商业秘密,所以需要对它们进行保护。服务器为IIS6和VB.NET,使用SSL方式。
请高手们赐教,尽可能详细一点。谢谢!
问题点数:50、回复次数:22Top
1 楼menuvb(戏子,白日做梦)回复于 2005-03-02 11:12:12 得分 0
jfTop
2 楼menuvb(戏子,白日做梦)回复于 2005-03-02 11:14:41 得分 5
只要你认为你的系统吃的消,可以使用IHttpHandler 接口来实现你的要求
另外一种方法我没测试过,也不知道行不行。所以不好说:)Top
3 楼zyug(LovlyPuppy)回复于 2005-03-02 11:35:44 得分 5
我不会,帮你顶Top
4 楼bbla()回复于 2005-03-02 11:36:34 得分 0
嘿嘿。没有用过IHttpHandler呢。不知道如何实现,系统消耗有多大?
要请教楼上Top
5 楼luckyprg(lucky)回复于 2005-03-02 11:38:00 得分 5
就是自己重写Http请求处理。Top
6 楼bbla()回复于 2005-03-05 08:39:29 得分 0
请高手现身啊。
还有,我到处找,都没有找到有关IRequiresSessionState的用法。谁能给一个示例吗?
Top
7 楼wg88888(温柔一刀)回复于 2005-03-05 08:58:50 得分 5
应该通过修改Web.config中的权限控制方式实现。Top
8 楼bbla()回复于 2005-03-05 11:29:12 得分 0
我是新手,请大家指教。
有两个问题,一个是如何重写一个ASP.NET(VB.NET)程序,将一个JPG文件以流方式应答给浏览器。另一个是,如何在这之前进行Session状态判断,True则执行前一步,False则提示错误或跳转登录程序。Top
9 楼xiaoniaofei(xiaoniao)回复于 2005-03-05 12:04:39 得分 5
自己做个映射!!然后,在web.config中配置
<httpHandler>
<add verb="*" path="*.jpg" type="类名,dll文件名">
</httpHandler>
在类中,控制他有没有权限访问!
其实就是UrlRewriteTop
10 楼flyye_cs(一叶孤舟)回复于 2005-03-06 15:49:23 得分 5
如果图片是放到数据库里的,应该可以很好控制Top
11 楼bbla()回复于 2005-03-06 16:16:13 得分 0
谢谢大家,将JPG文件应答给浏览器的问题,已经解决。参考代码为:
Dim x As Integer = 3
If x > 2 Then
Try
Response.ContentType = "image/jpeg"
Dim ImgName As String
ImgName = "img/" & Me.Request.QueryString("BID") & ".jpg"
Dim strFilename As String
Dim i As System.Drawing.Image
strFilename = Server.MapPath(ImgName)
Dim ImgSize As Long = FileLen(strFilename) '通过FileLen函数检查文件是否存在。如果不存在,运行到这里将抛出一个异常
i = System.Drawing.Image.FromFile(strFilename)
Dim b As New System.drawing.Bitmap(i.Width, i.Height, PixelFormat.Format24bppRgb)
Dim g As Graphics = Graphics.FromImage(b)
g.DrawImage(i, New Point(0, 0))
b.Save(Response.OutputStream, ImageFormat.Jpeg)
b.Dispose()
Catch ex As Exception
Me.Response.Write("打开文件错误!")
'Me.Response.End()
End Try
End If
但是在按以下方式配置Web.config时出现问题。仍然可以在浏览器中用http://localhost/WebApplication2/csdn.jpg访问图片。如果将“*.jpg”改为“*.aspx”之类的,则没有问题。
<httpHandlers>
<add verb="*" path="*.jpg" type="HandlerExample.MyHttpHandler,HandlerTest"/>
</httpHandlers>
苦恼中......Top
12 楼bbla()回复于 2005-03-06 16:31:41 得分 0
在解决这个问题的过程中,发现有另类方法,是否可行,提出给大家研究。
在解决了在ASPX程序里以Graphics.DrawImage方式显示图片的问题后,一个方法是,将JPG文件藏在一个大家难以发现的Web服务器的目录里;另一个方法是修改JPG文件的扩展名为*.vb等被IIS禁止的文件类型,浏览器访问这些文件时将提示错误信息“无法提供此类型的页”。Top
13 楼bbla()回复于 2005-03-06 18:09:26 得分 0
原来是没在IIS里做.jpg映射。Top
14 楼iamyibai()回复于 2005-03-08 11:21:27 得分 5
学习Top
15 楼bbla()回复于 2005-03-08 11:22:37 得分 0
现在遇到的问题是,我在写一个Namespace功能的VB时通不过VBC编译。
请教大侠,如何写一个以Graphics.DrawImage方式显示图片的Namespace?
谢谢!Top
16 楼huwei2003(凡)回复于 2005-03-08 11:54:13 得分 5
显示图片是不用真实路径就行了
显示图片用一个用户控件,在其它页面调用,再把该页urlrewriter,其它的用户权限控制写在程序里就行了Top
17 楼bbla()回复于 2005-03-08 15:25:35 得分 0
呵呵,不明白Top
18 楼bbla()回复于 2005-03-16 19:03:38 得分 0
已经完美解决。等稍歇下来的时候,我把操作步骤和程序代码全部贴上来。
看以前的帖子,发现CSDN里还是有高人的。但是,现在高手已经很少现身了,这直接影响了CSDN的论坛水平。Top
19 楼misng(沦落人)回复于 2005-04-23 11:47:33 得分 0
学习Top
20 楼Cry_Out(东北)回复于 2005-04-23 12:08:16 得分 0
学习Top
21 楼sp1234(asp.net不是一个语言,是一个操作系统)回复于 2005-04-23 12:36:46 得分 5
建议不要修改IIS影射。程序员只应该控制自己所属范围的资源。
输出 <img src="myImage.aspx?id=50D3A9C8-669D-4147-9B3F-4522145849BE"> 的形式隐藏图片文件和判断权限。Top
22 楼dTianx(铁锈)回复于 2005-04-23 14:00:43 得分 5
你可以看看form 认证
在web.config中:
<authentication mode="Forms">
<forms name="ModleCenterExpManSys" loginUrl="logon.aspx" timeout="90"/>
</authentication>
这样就可以保证认证用户才能访问了。
如果你的目录不需要认证:
<authorization>
<allow users="*"/> <!-- 允许所有用户 -->
<!-- <allow users="[逗号分隔的用户列表]"
roles="[逗号分隔的角色列表]"/>
<deny users="[逗号分隔的用户列表]"
roles="[逗号分隔的角色列表]"/>
-->
</authorization>Top




