溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

ASP.NET中怎么設(shè)置圖庫權(quán)限

發(fā)布時(shí)間:2021-07-16 13:53:56 來源:億速云 閱讀:107 作者:Leah 欄目:開發(fā)技術(shù)

這篇文章給大家介紹ASP.NET中怎么設(shè)置圖庫權(quán)限,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

1、通過一個(gè)實(shí)例來介紹圖庫權(quán)限,其中涉及到數(shù)據(jù)庫的應(yīng)用,在visual studio 2010 連接到數(shù)據(jù)庫  中創(chuàng)建數(shù)據(jù)集及數(shù)據(jù)表可能會(huì)出現(xiàn)無法遠(yuǎn)程連接的錯(cuò)誤,具體ide解決方案

可以參考 SQL Server 2008 R2:error 26 開啟遠(yuǎn)程連接詳解

2、這個(gè)實(shí)例,是通過輸入用戶名和密碼判斷該用戶是普通用戶還是收費(fèi)用戶,然后進(jìn)入下載圖片列表,非用戶點(diǎn)擊下載是轉(zhuǎn)到跳轉(zhuǎn)頁面提示,普通用戶下載圖片是帶水印的

    試用圖片,而收費(fèi)用戶下載圖片是原始版圖片。在登陸的時(shí)候,同時(shí)設(shè)置錯(cuò)誤登陸次數(shù)限制以及嘗試登陸時(shí)間間隔要求。

    這個(gè)過程需要建立數(shù)據(jù)表以及數(shù)據(jù)集:建一個(gè)DAl文件夾存放,數(shù)據(jù)集存放在APP_Date文件夾下,以確保數(shù)據(jù)的安全性

    建數(shù)據(jù)表如下:

           ASP.NET中怎么設(shè)置圖庫權(quán)限

   數(shù)據(jù)庫語句如下:

  SELECT ID, sUserName, sPassword, iLevel, sErrorTime, sLastErrorTime  FROM T_userInfo

  SELECT ID, iLevel, sErrorTime, sLastErrorTime, sPassword, sUserName FROM T_userInfo WHERE (ID = @ID)

  SELECT ID, iLevel, sErrorTime, sLastErrorTime, sPassword, sUserName FROM T_userInfo WHERE (sUserName = @sUserName)

   UPDATE T_userInfo Set sErrorTime=IsNULL(sErrorTime,0)+1,sLastErrorTime=getdate() where ID=@ID

   UPDATE T_userInfo  Set  sErrorTime=0 where ID=@ID


登陸頁面:login.aspx

復(fù)制代碼 代碼如下:


<%@ Page Language="C#" AutoEventWireup="true" CodeFile="login.aspx.cs" Inherits="圖片下載.login" %>

<!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">
    <div>

    </div>
    <asp:Label ID="Label1" runat="server" Text="用戶名:"></asp:Label>
    <asp:TextBox ID="txtUserName" runat="server"></asp:TextBox>
    <asp:Label ID="lablwarn" runat="server" BackColor="#FF3300"
        BorderColor="#FF3300" Visible="False"></asp:Label>
    <br />
    <asp:Label ID="Label2" runat="server" Text="密碼  :   "></asp:Label>
    <asp:TextBox ID="txtPassword" runat="server" TextMode="Password" ></asp:TextBox>
    <br />
&nbsp;&nbsp;&nbsp;&nbsp;
    <br />
&nbsp;&nbsp;&nbsp;&nbsp;
    <asp:Button ID="btnLogin" runat="server" onclick="btnLogin_Click" Text="登陸" />
    </form>
</body>
</html>

登陸頁面:login.aspx.cs

復(fù)制代碼 代碼如下:


using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using 圖片下載.DAL.DataSetPicTableAdapters;

namespace 圖片下載
{
    public partial class login : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }

        protected void btnLogin_Click(object sender, EventArgs e)
        {
            T_userInfoTableAdapter adapter = new T_userInfoTableAdapter();
            var data = adapter.GetDataByUserName(txtUserName.Text);
            if (data.Count <= 0)
            {
                lablwarn.Text = "用戶名不存在";
                lablwarn.Visible = true;
            }
            else {
                //LinQ的single的方法,返回為一條數(shù)據(jù)
                //數(shù)據(jù)為0 或者或者多條,則拋出異常,把錯(cuò)誤扼殺在搖籃中
                var user = data.Single();

                //判斷錯(cuò)誤時(shí)間和錯(cuò)誤次數(shù)是否為空
                //計(jì)算當(dāng)前時(shí)間和和上次錯(cuò)誤分鐘差
                if (!user.IssErrorTimeNull() && !user.IssLastErrorTimeNull()) {
                    double time = (DateTime.Now - user.sLastErrorTime).TotalMinutes;
                    if (time <= 30 && user.sErrorTime > 5)
                    {

                        lablwarn.Text = "輸入密碼錯(cuò)誤次數(shù)過多,請等待30分鐘再重新輸入";
                        lablwarn.Visible = true;
                        return;
                    }
                }

                if (user.sPassword == txtPassword.Text)
                {
                    Session["是否登陸"] = true;
                    Session["登陸的ID"] = user.ID;

                    lablwarn.Text = "登陸成功,歡迎回來";
                    lablwarn.Visible = true;
                    //清空錯(cuò)誤次數(shù)
                    adapter.ResertTimeById(user.ID);
                    Context.Response.Redirect("Pic_list.htm");
                    //然后Redirect到其他頁面
                }
                else {
                    adapter.IncErrorTimeById(user.ID);
                    lablwarn.Text = "密碼錯(cuò)誤,請重新輸入";
                    lablwarn.Visible = true;
                }
            }
        }

    }
}
/*出現(xiàn)錯(cuò)誤:在與 SQL Server 建立連接時(shí)出現(xiàn)與網(wǎng)絡(luò)相關(guān)的或特定于實(shí)例的錯(cuò)誤。
 * 未找到或無法訪問服務(wù)器。請驗(yàn)證實(shí)例名稱是否正確并且 SQL Server 已配置為允許遠(yuǎn)程連接。
 * (provider: SQL Network Interfaces, error: 26 - 定位指定的服務(wù)器/實(shí)例時(shí)出錯(cuò))
 *
 * 解決:
*/

下載列表頁面:Pic_list.htm

<a href="Pic_download.ashx?fileName=11.jpg">圖片1</a>
<a href="Pic_download.ashx?fileName=11.jpg">圖片2</a>
<a href="Pic_download.ashx?fileName=11.jpg">圖片3</a>

下載列表頁面:Pic_download.ashx
using System.Linq;
using System.Web;
using 圖片下載.DAL.DataSetPicTableAdapters;
using System.Web.SessionState;
using System.Drawing;

namespace 圖片下載
{
    /// <summary>
    /// Pic_download 的摘要說明
    /// </summary>
    public class Pic_download : IHttpHandler,IRequiresSessionState
    {

        public void ProcessRequest(HttpContext context)
        {
            if (context.Session["是否登陸"] == null)
            {
                context.Response.Redirect("Target.htm");
            }
            else {
                string fileName = context.Request["fileName"];

                //報(bào)頭
                context.Response.ContentType="image/JPEG";
                string newFileName = HttpUtility.UrlEncode(fileName);
                context.Response.AddHeader("Content-Disposition", "attachment:filename=" + newFileName);

                //根據(jù)ID獲取數(shù)據(jù)
                int user_id = (int)context.Session["登陸的ID"];
                T_userInfoTableAdapter adapter = new T_userInfoTableAdapter();
                var data = adapter.GetDataById(user_id);
                var user = data.Single();

                if (user.iLevel == 0) //普通用戶
                {
                    using (System.Drawing.Bitmap bitImage = new System.Drawing.Bitmap("image/" + fileName))
                    {
                        //設(shè)置畫布
                        using (System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bitImage))
                        {
                            g.DrawString("免費(fèi)用戶試用——"+user.sUserName, new System.Drawing.Font("宋體", 20),Brushes.Red, 0, 0);
                           }
                        //保存到輸出流中
                        bitImage.Save(context.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);

                    }
                }
                else//收費(fèi)用戶
                {
                    context.Response.WriteFile("image/"+fileName);
                }
            }
        }

        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }
}
跳轉(zhuǎn)頁面:Target.htm

復(fù)制代碼 代碼如下:


<!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>跳轉(zhuǎn)中</title>
</head>
<body>
    請先登錄,頁面將在5秒以后轉(zhuǎn)向登陸頁面,如果
    您想立即進(jìn)入登錄界面,請<a href="login.aspx">點(diǎn)擊這里</a>
    <br/> 還剩<div id="leftDiv"></div>秒
</body>
</html>
<script type="text/javascript">
    var leftSecond = 5;
    setInterval(function () {
        if (leftSecond <= 0) {
            window.location.href = "login.aspx";
        }
        document.getElementById("leftDiv").innerHTML = leftSecond;
        leftSecond--;
    }, 1000)
</script>


總結(jié):

(1、最大的問題就是遇到數(shù)據(jù)庫遠(yuǎn)程連接的問題,不過通過了解才知道SQL server 2008不默認(rèn)支持,需要一番設(shè)置,具體的流程:SQL Server 2008 R2:error 26 開啟遠(yuǎn)程連接詳解
詳細(xì)出處參考:SQL Server 2008 R2:error 26 開啟遠(yuǎn)程連接詳解
(2、獲取context.Request等需要解析IRequiresSessionState接口

關(guān)于ASP.NET中怎么設(shè)置圖庫權(quán)限就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI