此文件是整個系統的配置中心,它告訴iis服務器本網站需要哪些運行時環境,需要哪些環境,將要進行哪些操作,開發人員也會將一個常量性的數據放在此配置中,以備系統全局調用。此文件內容豐富,對於一些普適性的項目,不作說明,只針對本系統的配置作相應說明。
web.config配置文件
web.config是xml格式的文件,它是一種結構性文檔,可以通過結點對數據進行遍歷。第一行<?xml version="1.0" encoding="utf-8"?>說明了xml所使用的格式與本文件的編碼類型,默認是unicode,這裡改成了utf-8。下面就是configuration父級結點,也就是說,這裡所有內容都是配置性的內容了。這裡要重點說明的是connectionStrings結點,這一項保存了ABConnection數據庫連接字符串。此字符串中包含了數據庫文件,並聲明了所需要的支持引擎(System.Data.SqlServerCe.4.0)。
在第97行有一個entityframework結點,這是vs自動配置的,用戶可以在項目-屬性中設置所使用的版本。當然,許多人還會在web.config中寫membership,這是用來作權限控制的。這也是.NET MVC中的新功能,但是由於vs會因此自動建立數據表,導致用戶對整個系統的掌握度降低,所以,權限方面設想了兩種解決方案,後面會說。第70行runtime的第二子級都是默認引用的命名空間,當用戶在本項目中新建一個類的時候,他們都會默認引用這些命名空間,以節省時間。
權限控制是一個網站系統的必須功能,大到角色權限,小到控制用戶是否登陸,都有涉及。.net一直都為此提供了豐富的實用的方法,比如aspx時代的from驗證,直接拖了控件就可以了,然後配置一下,每一頁都會進行自動驗證。而MVC不存在控制這個說法,所以拖控件這種形式已經不可取了,因為微軟又給用戶提供了membership來控制,但是由於membership要在數據庫中自然生成表,而且,表的字段非常多,加上強制定義了一些person的屬性,然後person實體類的構造方法又沒有空參數的,所以,構造起來非常麻煩,想到每次要寫幾十個字段賦值,太可怕了。所以,經過考慮,決定自己來解決權限驗證的問題,權限驗證包括兩部分:a.驗證是不是在線用戶;b.驗證進行管理員操作的是不是管理員。其實這兩種方法的實現是相同的,就拿檢測用戶是否存在為例說明,由於本項目目的在於應用.NET MVC,所以,期間並沒有進行安全方面的過多設置。
由於所有的邏輯都要由控制器來控制,所以最先想到的就是從控制器獲取控制權限,想在每一個控制中調用一個靜態方法,那就可以先寫一個父控制器,實現一個靜態方法,然後其它的控制器都繼承該控制器,之後在每一個控制器的方法中,先使用此靜態方法驗證一次。但是,此方法似乎打破了.NET MVC的正常文件結構。所以,最後沒有采用它,而選擇了.NET MVC中新的特性filter。filter其實就是方法的特性屬性。如果控制了方法的屬性,寫了方法的事件,那麼該方法執行以後就可以得到控制。
在項目中添加文件夾Filter,在此文件夾內新建類IsLogedAttribute.cs,這個類就是一個Filter,其功能是在執行一個控制器方法的時候,檢測當前用戶是否在線。
引用的命名空間:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.MVC;
using AlumniBook.Models;
using AlumniBook.Ensleep;
查看本欄目