2011-12-14 97 views
0

當您使用sqlcheck和cookie驗證用戶以存儲信息時,將使用「標準」登錄。 (如代碼示例所示)。現在我想在這裏存儲更多關於客戶的信息。例如,如果他以管理員身份登錄,他選擇哪個部門進行身份驗證等。對此,最佳方法是什麼? (會話,緩存,存儲在用戶propertys信息)保存登錄信息和其他連接到用戶登錄的安全信息

四處張望,但沒有找到有關MVC3框架的安全性和標準的最佳答案。由於即時通訊類似新的MVC我想「深入」正確的habbits馬上... anny建議/意見表示讚賞。

public ActionResult Index() 
    { 
     return View(); 
    } 

    [HttpPost] 
    public ActionResult Index(LoginModel model) 
    { 
     if (ModelState.IsValid) 
     { 
      if (model.Username == "qwe" && model.Password == "qwe")// Proper 
            sql authentication to be implemented here 
      { 
       FormsAuthentication.SetAuthCookie(model.Username, false); 
       // True or false determents if its a persistent coockie or not 



      return RedirectToAction("Index", "Home"); 
      } 
      { 
       ModelState.AddModelError("", "Wrong login information"); 
      } 
     } 
     return View(); 
    } 

回答

0

您使用的是aspnet sql成員資格提供程序嗎?如果是這樣,您可以使用角色的[授權]屬性。通過這種方式,您可以鎖定網站角色的網站,例如admin。您可以擴展成員資格提供程序以便爲每個用戶定製屬性。很難說這是否足夠。我想我們需要知道你想要添加的所有用戶屬性以及它們提供的功能。例如,如果他們在一個部門中,他們可以做什麼或不可以做什麼。

+0

我使用AspNetSqlMembershipProvider但kindof「outOfTheBox」沒有真正發現有關如何充分使用它的許多信息/教程我跟隨了一個關於www.asp.net(這個多人網站的人)的教程和什麼它涵蓋的是創建一個LoginModel模型,用它來獲取數據,然後我們基本上只是打開配置文件中的東西。並設置一些基本的訪問級別。 即時通訊試圖實現的是商店的存儲系統,他們需要登錄到自己的商店(例如,只看到他們自己的產品等),所以我需要這個信息很容易訪問全球。 – 2011-12-14 16:41:38

0

對於驗證,您應該使用基於IPrincipal的某些內容,例如FormsAuthentication或WindowsAuthentication。您將使用[Authorize]屬性來阻止訪問,並控制哪些角色可以訪問該方法(即[Authorize(Roles = "Administrator")])。

對於更細粒度的authenticaiton,你檢查(即

@if (User.IsInRole("Administrator")) { 
    <your code for only an administrator> 
} 

您可以使用相同的技術來查找給部門的作用,如果你想,或者查找他們的部門基礎上,User.Identity.IsAuthenticatedUser.IsInRole()方法其用戶名使用User.Identity.Name