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

有什么问题?

4

1 回答 1

0

您不应该将用户名放在查询字符串中。

如果您使用的是内置的 ASP.NET Membership 提供程序,您的操作将如下所示。

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

        var someService = new MyService();
        var someData = someService.GetSomeDataByUserId(userId);
        //...
    }
于 2013-02-14T22:25:00.570 回答