2013-02-14 2 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, ваше действие будет выглядеть примерно так.

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

     var someService = new MyService(); 
     var someData = someService.GetSomeDataByUserId(userId); 
     //... 
    } 
Смежные вопросы