【发布时间】:2014-01-27 19:30:13
【问题描述】:
现在我的网站结构如下:
前端:网站\user1、网站\user2
后端:website\account\user1,website\account\user2
网站\帐户控制器应用了通用 [Authorize] 属性。这还不够,因为任何授权用户都可以通过访问 website\account\ url(如果他知道他的名字)来访问其他用户支持的功能。
解决此问题的最佳方法是什么?
到目前为止,我有两种方法:
-
创建自定义 Authorize 属性,检查控制器上下文,从中提取用户信息并将其与 ASP.NET 中的当前授权用户进行比较:
var currerntUserId = (long)System.Web.Security.Membership.GetUser().ProviderUserKey; return ExtractCurrentUserId(filterContext) == currerntUserId; - 从后端 URL 中删除部分并让所有用户访问 \account。当前用户信息将由 ASP.NET 框架提供。
【问题讨论】:
-
为什么后端没有website\my-account,只根据当前Controller.User.Identity.Name查询数据库?
标签: c# asp.net asp.net-mvc asp.net-mvc-4 authorization