`
java-mans
  • 浏览: 11380475 次
文章分类
社区版块
存档分类
最新评论

asp.net权限控制

 
阅读更多

有人说asp.net很简单,其实呢这只是表面现象。要把asp.net学的很深真的是一件不容易的事情,从开发的角度来说asp.net要方便一些,只是移植性差了一些。学过java之后再来学习就会觉得很简单,很快就可以上手。

下面就接着前面的博客写一个权限控制和内置对象相结合的小例子,这个例子在学校里可谓经典。所以我就借这个小例子来弄下。

1.开发一个用户登录表单,这里只有登录后的用户才能进入下载页面

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="downloadfile._Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>用户登录</title>
</head>
<body>
    <form id="form1" runat="server" action="ashx/ToLogin.ashx">
     用户名:<input type="text" name="fname"/><br /><br/>
     密码:<input type="password" name="password"/><br /><br/>
     <input type="submit" value="登录"/>
      <input type="reset" value="取消"/>
    </form>
</body>
</html>

2.新建一个数据库文件,并创建一个数据表

3.添加一个数据集,后面会使用类型化dataset来查询数据库


4.编写一般处理程序处理用户登录

using System;
using System.Collections;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Xml.Linq;
using System.Web.SessionState;
using downloadfile.DataSetTeacherTableAdapters;

namespace downloadfile.ashx
{
    /// <summary>
    /// $codebehindclassname$ 的摘要说明
    /// </summary>
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    public class ToLogin : IHttpHandler, IRequiresSessionState
    {

        public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/plain";
            string fname = context.Request["fname"];
            string password = context.Request["password"];
            m_teacherTableAdapter adpater = new m_teacherTableAdapter();
          
            var data = adpater.GetDataByFname(fname);
            var single = data.Single();
          if (data.Count <= 0)
          {
              context.Response.Write("用户名不存在");
          }
          else {
              //判断数据的唯一性,防止出现未知错误
            
              //如果用户输入的密码和数据库的相同,则可以登录成功
              if (single.fpassword.Equals(password))
              {
                  context.Session["status"] = "login";
                  context.Session["username"] = fname;
                  context.Session["password"] = password;
                  context.Session["userid"] = single.fid;
                  //context.Response.Write("登录成功");
                  context.Response.Redirect("../manage/allpicture.htm");

              }else{
                  context.Response.Redirect("../Default.aspx");
              }
             
          }
        }

        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }
}


5.编写图片的下载页面

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <title>图片下载页面</title>
</head>
<body>
 <center>
   <div>
     <a href="../ashx/Download.ashx?filename=1.jpg">1.jpg</a>
     <a href="../ashx/Download.ashx?filename=2.jpg">2.jpg</a>
     <a href="../ashx/Download.ashx?filename=3.jpg">3.jpg</a>
     <a href="../ashx/Download.ashx?filename=4.jpg">4.jpg</a>
   </div> 
 </center>
  
</body>
</html>


6.编写下载的处理程序,如果是普通用户则下载的图片加水印

using System;
using System.Collections;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Xml.Linq;
using downloadfile.DataSetTeacherTableAdapters;
using System.Web.SessionState;
using System.Drawing;
using System.Drawing.Imaging;

namespace downloadfile.ashx
{
    /// <summary>
    /// $codebehindclassname$ 的摘要说明
    /// </summary>
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    public class Download : IHttpHandler,IRequiresSessionState  
    {

        public void ProcessRequest(HttpContext context)
        {
           
            
          
            //如果用户已经
            string status = (string)context.Session["status"];
          
           if (status!=null)
            {
              

               
               //取得文件名称
               string filename=context.Request["filename"];
                //设置消息头用来下载文件
                context.Response.ContentType="application/octet-stream";
                context.Response.AddHeader("Content-Disposition", string.Format("attachment;filename=\"{0}\"", filename));
                //从session取得登录用户的fid
               int fid=(int)context.Session["userid"];
                //根据用户id查询该用户的级别,根据级别获得不同的下载
                //数据集
              
                //通过用户的id查询用户的级别
                m_teacherTableAdapter adpater = new m_teacherTableAdapter();
                var data = adpater.GetDataById(fid);
                var single = data.Single();
                if (single.level == 1)
                {
                    //context.Response.WriteFile("../image/" + filename);
                    using (Bitmap bitmap = new Bitmap(context.Server.MapPath("../image/" + filename)))
                    {
                        using (Graphics gra = Graphics.FromImage(bitmap))
                        {
                            gra.DrawString("免费下载", new Font("宋体", 20), Brushes.Red, 0, 0);
                           
                        }
                        bitmap.Save(context.Response.OutputStream, ImageFormat.Jpeg);

                    } 
                  
                }
                else {
                    context.Response.WriteFile("../image/" + filename);
                }


            }
            else
            {
                context.Response.Write(status);
                //context.Response.Write("请先登录");
            }
          
        }

        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }
}


7.最后来看下程序的运行效果

不好意思了,刚要上传图片的,运气不好遇到了csdn升级。代码我已经上传了。

分享到:
评论

相关推荐

    asp.net 权限管理系统

    asp.net 权限管理asp.net 权限管理asp.net 权限管理asp.net 权限管理asp.net 权限管理asp.net 权限管理

    ASP.NET源码——asp.net权限管理系统Demo源码.zip

    ASP.NET源码——asp.net权限管理系统Demo源码.zip

    ASP.NET权限管理系统

    ASP.NET权限管理系统(FrameWork) 1.0.6 Release和ASP.NET权限管理系统(FrameWork) 1.0.7 Release

    ASP.NET权限管理系统(FrameWork) 1.0.8 Release

    ASP.NET权限管理系统(FrameWork) 1.0.8 Release

    ASP.NET权限管理系统源码

    ASP.NET权限管理系统源码 由于每次开发新项目都需要一个权限管理系统,为了解决重复开发让成本增加的问题,我们特此开发一套权限管理系统,方便大家在此基础上开发出更多更优秀的软件产品。 功能介绍:基础设置--...

    ASP.NET LayUI权限管理系统源码

    4、该权限系统精确控制到每一条命令,并且采用缓存机制减少多余的数据库权限验证操作。 三、初次运行说明 在文件夹里有说明文档。 四、注意事项 1、同一个账号同时多个浏览器(包括手机浏览器)登陆,后者挤掉...

    ASP.NET权限管理系统(FrameWork) v1.0.5

    3)采用角色来进行权限的授权,每个用户可以属于多个角色,享有交差权限. 4)整合方便,权限检测采用httpmodule方式检测.基本不用对原有程序进行修改,便可将原有程序进行整合. 5)可视化编辑,全新的Menu和Tab控件.支持拖拉...

    ASP.NET 权限管理系统

    系统管理包括:用户列表,用户添加,类别管理,模块管理,部门列表,部门添加,职位列表,职位添加,模块排序,角色权限管理,角色列表,角色添加,用户角色列表,采用框架设计,工具为visual studio .net 2008 ...

    关于ASP.NET的权限控制

    关于ASP.NET的权限控制,通过配置文件实现页面访问的控制

    asp.net通用权限管理系统

    asp.net通用权限系统 版本2012-9-22日 开发工具: sql2005+vs2008 数据库文件和建模文件都在里面(ProjectDB,MyProject) 建模文件是用的PowerDesigner 12.5 1.可插拔的权限系统,权限控制粒度可精确页面和按钮,任何...

    ASP.NET通用权限管理系统

    ASP.NET2.0实现的通用权限管理系统,已调试可运行。

    ASP.NET系统用户权限设计与实现

    ASP.NET系统用户权限设计与实现 针对一切用户权限设置的操作与制作步骤

    asp.net权限管理 系统源码

    asp.net+Web+mvc4.0 EasyUI 权限管理 建材管理系统源码。

    经典asp.net 权限管理

    经典asp.net 权限管理 1)其可以支持多个应用,多个模块的权限管理. 2)支持Access和MsSql200/2005以及Oracle9i以上数据库. 3)采用角色来进行权限的授权,每个用户可以属于多个角色,享有交差权限. 4)整合方便,权限...

    ASP.NET权限管理

    该项目详细描述了权限管理的问题,适合新手学习权限等,权限源码,只要不是太。。都可以学会

    ASP.NET+MVC+创建用户权限管理范例程序源码

    ASP.NET+MVC+创建用户权限管理范例程序源码

    asp.net core项目mvc权限控制:分配权限

    学习的最好方法就是动手去做,这里以开发一个普通的权限管理系统的方式来从零体验和学习Asp.net Core。项目的整体规划大致如下

    asp.net权限管理

    通用权限管理,可以自己动态加权限,cs与bs完美结合

Global site tag (gtag.js) - Google Analytics