五月综合缴情婷婷六月,色94色欧美sute亚洲线路二,日韩制服国产精品一区,色噜噜一区二区三区,香港三级午夜理伦三级三

您現(xiàn)在的位置: 365建站網(wǎng) > 365文章 > asp.net 實現(xiàn)一個簡單CAS Server

asp.net 實現(xiàn)一個簡單CAS Server

文章來源:365jz.com     點擊數(shù):1138    更新時間:2009-09-16 11:54   參與評論
項目代碼下載 http://files.cnblogs.com/mobile/cas_demo.zip

CAS的原理,參加 http://blog.csdn.net/HuDon/archive/2007/02/01/1499815.aspx
根據(jù)下圖所示,我們需要實現(xiàn)CASClient端得"攔截器",我們通過HttpModule實現(xiàn),服務(wù)端需要兩個頁面,一個是登陸界面,一個途中第5步通過token獲取的用戶信息的頁面或者ashx。
cas_protocol-1.jpg

1、客戶端的代碼和配置
新建一個類,代碼如下:
HttpModule
需要在攔截所有請求,在web.config中配置
<httpModules>
..............
<add name="LoginMoudle" type="client.filter"/> //type由于寫在項目中只需要namespace.class方式,如果放在dll中,需要加",dll文件名"
</httpModules>

2、CAS服務(wù)端代碼
1)登陸頁面

1     <form id="form1" runat="server" method="post" action="login.ashx">
2     <div>Login ID:<input type="text" id="loginid" name="loginid" /></div>
3     <div>Password:<input type="password" id="password" name="password" /></div>
4     <div><input type="hidden" id="continute_url" name="continute_url" value="<%=Request["continute_url"] %>"/></div>
5     <div><input type="submit" value="Login" /></div>
6     </form
其中continute_url是filer傳來的

2)登陸代碼

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Web;
 5 using System.Web.Services;
 6 
 7 namespace cas
 8 {
 9     [WebService(Namespace = "http://tempuri.org/")]
10     [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
11     public class login : IHttpHandler
12     {
13 
14         public void ProcessRequest(HttpContext context)
15         {
16             HttpRequest Request = context.Request;
17             string loginid = Request["loginid"];
18             string password = Request["password"];
19             string continute_url = Request["continute_url"];
20 
21             //用戶登錄驗證.
22 
23             string token = DateTime.Now.Ticks.ToString();//登陸成功后 生成token方法,自己考慮,需唯一
24             //緩存token
25             context.Application[token] = "用戶名"; //實際使用中存放用戶信息類的實例
26             //轉(zhuǎn)移
27             context.Response.Redirect(continute_url + "?token=" + token);
28         }
29 
30         public bool IsReusable
31         {
32             get
33             {
34                 return false;
35             }
36         }
37     }
38 }
39 

3)CAS端獲取用戶信息的頁面
method GetUser

運行過程基本是這樣的:用戶訪問網(wǎng)站,filer首先攔截判斷session中用戶信息,如果不為空放行,否則,轉(zhuǎn)到CAS登陸界面,登陸界面登陸后,返回地址中夾帶token.
網(wǎng)站后臺通過get或者post方法使用token去獲取用戶信息。

最后網(wǎng)站程序通過Session["user"]獲取用戶信息,無需關(guān)心登陸的實現(xiàn),這樣我們就實現(xiàn)了一個簡單單點登錄系統(tǒng)了。

如對本文有疑問,請?zhí)峤坏浇涣髡搲?,廣大熱心網(wǎng)友會為你解答??! 點擊進入論壇

發(fā)表評論 (1138人查看0條評論)
請自覺遵守互聯(lián)網(wǎng)相關(guān)的政策法規(guī),嚴禁發(fā)布色情、暴力、反動的言論。
昵稱:
最新評論
------分隔線----------------------------

其它欄目

· 建站教程
· 365學(xué)習(xí)

業(yè)務(wù)咨詢

· 技術(shù)支持
· 服務(wù)時間:9:00-18:00
365建站網(wǎng)二維碼

Powered by 365建站網(wǎng) RSS地圖 HTML地圖

copyright © 2013-2024 版權(quán)所有 鄂ICP備17013400號