相关疑难解决方法(0)

扩展AuthorizeAttribute覆盖AuthorizeCore或OnAuthorization

使用ASP.NET MVC我正在创建一个自定义Authorize属性来处理一些自定义授权逻辑.我已经看了很多例子,这很简单,但我的问题是哪种方法最好覆盖,AuthorizeCore或OnAuthorization?我见过许多覆盖其中一个的例子.有区别吗?

asp.net-mvc authorization action-filter asp.net-mvc-3

54
推荐指数
2
解决办法
2万
查看次数

ASP.NET MVC 3自定义授权

我正在编写一个ASP.NET MVC 3应用程序,我有很多角色:

系统管理员,客户管理员,预算所有者,应用所有者

我知道我可以使用[Authorize(Roles ="...")]属性轻松限制对某些控制器(和操作方法)的访问.

但是,某些授权不仅仅基于角色,而是基于权限.例如,预算所有者应该只能访问分配给其成本中心的预算 - 而不是其他人的预算.

目前我在action方法中有一些代码来检查:

if(UserCapabilities.CanAccessBudget(budgetId))
{
  // get budget and show view
}
else
{
  // redirect to index action
}
Run Code Online (Sandbox Code Playgroud)

这开始使我的代码变得混乱并使检查安全性变成一场噩梦 - 因为我有许多需要这些不同类型的授权检查的动作方法.

我有一个想法是编写一些自定义属性,我可以用它来装饰我的操作方法并清理我的代码:

//
// GET: /Budgets/View/1
[CanAccessBudget]
public ActionResult View(int id)
{
 //...
}
Run Code Online (Sandbox Code Playgroud)

人们怎么想?编写自定义属性是最干净,最易维护的方法吗?

asp.net-mvc asp.net-mvc-3

7
推荐指数
1
解决办法
2825
查看次数

编辑数据时,应将数据的id存储在会话中

我有任何用户可以编辑的帖子列表.
当我在隐藏字段中进入帖子的编辑模式时,我存储PostId.
现在我发现这实际上很糟糕,因为用户可以更改隐藏字段并更新其他帖子.

session保持唯一的选择id后用户编辑,或者有一些更好的办法了吗?

因为我真的很糟糕:(

c# asp.net-mvc asp.net-mvc-3

3
推荐指数
1
解决办法
63
查看次数