2016年2月18日 星期四

{C#} 取連結Json資料作法

今天工作覺的無聊,打開「政府資料開放平臺」看看有什麼資料可以拿來用,創造出東西出來

第一次接觸這樣的東西,覺的相當有趣,而最初淺的就是直接看別人怎麼用這個網站的資訊創造出來東西



而身為最「弱」的程式開發員,今天就來試試,當不用前端程式呼叫某個網頁傳回的資料(俗稱Service),該怎麼做?
而一開始要準備好一個Service 網址,可以抓資料回來

2016年2月16日 星期二

{Interview 專區} 什麼是Forms驗證 登入登出頁

今天要來說說FormsAuthentication
每個網站與應用程式幾乎都要用登入的功能
就是要驗證使用者是否有權限這件事
而我從來沒在實作FormsAuthentication的經驗
面試被問到的時候還是一臉茫然
然後面試官就覺的這是人生絕望的失望情結
其實真的不太懂,有這麼嚴重嗎?
這個東西,通常前輩寫了一回,後輩就不會去改動到
只有沒事的時候去「偷翻」然後摸一摸
但你覺的摸一摸就會寫
我的領悟力沒這麼高....

回到主題
using System.Web.Security 之下有FormsAuthentication這個類別
裡面就包好了很多寫好的程式,簡單來說就是做帳戶登入登出轉址等等
而這裡面的原理就是寫一個cookie在使用者的電腦,並用加密的方式保留著
點選擇登出才會刪除cookie,或是使用者去做「網際網路選項」裡面把cookie刪掉
不然就算關掉網頁,再打開網頁依然是登入的狀態,不少網頁都是這樣,就像我剛登入的博客來,而我沒清掉我的cookie

利用網路上的範例,終於實現自已寫出一個登入登出的頁面,也許老手會覺的這三小,而對不想研究技術的我來說,已經是一個目標達成

首先,這是一個MVC的範例
Control:
//以下所有未加AllowAnonymous者,都一定要經過login 成功才可以進入
[Authorize]
    public class MainController : Controller
    {
        //不一定要經過login 成功才可以進入
        [AllowAnonymous]
        public ActionResult Login()
        {
            return View();
        }
        [AllowAnonymous]
        [HttpPost]
        public ActionResult Login(Log_Xml logxml)
        {
            //這邊就會進到Log_Xml 做Validate func
            if (!ModelState.IsValid)
            {
                return View();
            }
            //要讓會員登入成「已驗證」狀態的話
            FormsAuthentication.RedirectFromLoginPage(logxml.Account, false);
         
            return null;
        }
        [AllowAnonymous]
        [HttpPost]
        public void LogOut()
        {
            //清除Session中的資料
            Session.Abandon();
            //登出表單驗證
            FormsAuthentication.SignOut();
            //導至登入頁
            //return RedirectToAction("Login", "Main");
        }
}

{Interview 專區}什麼是Interface 與運用 by C#

這個年頭誰都可以當程式設計師,一直說服自已就是這樣所以沒啥好難
每個「很強」的部落客寫的落落長,裡面有多少的字看的懂,只能說我知道這是英文與中文

為何當一個程式設計師不能簡單一點?
今天,要講什麼是interface ,OO是三小,只有在課本上背著背著考,其他懶的管
現在回到正題「interface 是什麼」
interface 就是介面,好像一個好手寫I-N-T-E-R-F-A-C-E就很強,所以在自已的專案上也跟著寫,然後,不知道要幹麼用

在網路上不少範例,但簡單來說,介面就是在上面宣告幾個屬性、方法,然後給別人Implements。
interface Interface1
    {
        List<Class1> allData();
        Class1 Databycode(string code);
        string CreateData(Class1 newData);
    }

2016年2月15日 星期一

{C#}利用LDAP協定與AD Server驗證

主要語法:
//要驗證的username與pwd
string domainAndUsername = domain + @"\" + username;
DirectoryEntry entry = new DirectoryEntry(_path, domainAndUsername, pwd);
DirectorySearcher search = new DirectorySearcher(entry);
//要驗證的username
search.Filter = "(SAMAccountName=" + username + ")";
search.PropertiesToLoad.Add("cn");
SearchResult result = search.FindOne();
result 為null即AD無此帳號或帳密錯誤


未驗證的要求會被重新導向到 Logon.aspx 頁面
Web.config 檔
<configuration>
  <system.web>
    <authentication mode="Forms">
      <forms loginUrl="logon.aspx" name="adAuthCookie" timeout="10" path="/">
      </forms>
    </authentication>
    <authorization>
      <deny users="?"/>
      <allow users="*"/>
    </authorization>
<!--此組態,所有對此應用程式發出的要求都會以已設定之帳戶的安全性內容執行。使用者必須提供認證以向 Active Directory 網域服務驗證,但只有已設定的帳戶可存取 Active Directory 網域服務。--!>
    <identity impersonate="true"/>
  </system.web>
 </configuration>