2013-02-14 85 views
0

我需要授權屬性以確保經過身份驗證的用戶可以訪問安全區域來管理他的和唯一的數據。如何獲取路由數據值

我正在考慮檢索httpContext.User.Identity.Name並將其與數據庫中的檢索用戶名進行匹配。

這是基本上好(安全)的方法?或者它可以在頭腦中更安全地完成?

所以,我的控制器上裝飾有自定義屬性

[UserAccountAuthorizeAttribute] 
public ActionResult Edit(string username) 
{ 
    return View(); 
} 

,我重寫AuthorizeAttribute但在調試模式下上了車以下行

var rd = httpContext.Request.RequestContext.RouteData; 
var username = rd.Values["username"]; // null 

什麼可以aproblem空值?

回答

0

您不應該在查詢字符串中輸入用戶名。

如果您使用內置的ASP.NET Membership Provider,您的操作看起來像這樣。

[Authorize] 
    public ActionResult Edit() 
    { 
     var userId = (Guid)Membership.GetUser().ProviderUserKey; 

     var someService = new MyService(); 
     var someData = someService.GetSomeDataByUserId(userId); 
     //... 
    }