我正在完成啓動另一個程序員的項目。改變整個架構是不可能的,但有些事情我想覆蓋。即 - 授權和存儲當前用戶會話的方式。 該項目表示通過soap服務與服務器進行通信的客戶端。在服務器上,有安全服務和其他幾種服務,例如A服務,B服務。 安全服務提供使用初始化的其他服務的認證和會話密鑰。 該項目是用ASP.NET MVC3編寫的,用戶模型的頭部是以singletone-Class的形式實現的,該類描述了與服務交互的方法。 授權如何工作 - CustomMembershipProvider具有覆蓋的ValidateUser方法,該方法在Security-service上運行。如果成功授權時,用戶註冊在asp.net - FormsService.SignIn(model.UserName,假),然後initizalied用戶等級:ASP.NET MVC項目體系結構問題 - 授權和會話
class SiteUser
{
public static SiteUser Current
{
get
{
if (HttpContext.Current.Session.IsNewSession & &! HttpContext.Current.User.Identity.IsAuthenticated)
{
throw new UserAutorizationExeption() {Reason = AuthExceptionReason.NewSession};
}
if (HttpContext.Current.Session [sessionKey] == null)
{
FormsAuthentication.SignOut();
throw new UserAutorizationExeption() {Reason = AuthExceptionReason.ServerSessionExpired};
}
return HttpContext.Current.Session [sessionKey] as W1User;
}
set
{
if (HttpContext.Current.Session! = null)
{
HttpContext.Current.Session [sessionKey] = value;
}
}
}
public SiteUser()
{
}
public static SiteUser Create()
{
SiteUser.Current = new SiteUser();
return SiteUser.Current;
}
// Web-services methods go here
}
的主要問題是,現在的會話存儲在內存中: 網的.config:
<sessionState mode="InProc" timeout="20" />
設置SqlServer的模式是有問題的,因爲這將是困難的SiteUser系列化。我怎樣才能解決這個問題? 授權方面存在問題 - 如何通過服務會話正確執行Asp.Net同步會話? 對不起,我的英文,如果需要澄清 - 提出問題。謝謝。
感謝您的諮詢與會議,你可以告訴授權?我不喜歡它現在如何實現 - 我知道用戶只有在試圖獲得它時才被授權。有了這個,如果在服務中發生錯誤,我知道這不是馬上 – Boo 2011-05-09 12:49:49
授權可以在服務層或ASP NET MVC。如果是SOA,則必須位於服務層。它會將用戶會話密鑰映射到用戶,並檢查它是否有權訪問。 – Aliostad 2011-05-09 12:54:08
你能給出一些關於映射會話密鑰的閱讀鏈接嗎? – Boo 2011-05-09 17:51:35