0
因此,我爲mvc網站設置了我的權限。我正在做一個基於角色的權限,根據操作的目的,在控制器中執行操作需要不同的角色。 我知道最推薦的是authorizeattribute(因爲我想緩存角色),但它有可能與actionfilterattribute相同嗎?使用actionfilterattribute的基於mvc角色的權限
目前我有類似這樣的actionfilterattribute:
public class PermissionRequired : ActionFilterAttribute{
private readonly Role reqrole;
public PermissionRequired(Role reqRole)
{
reqrole = reqRole;
}
public override void OnActionExecuting(ActionExecutingContext filterContext) {
var ctrl = (GeneralController)filterContext.Controller;
if (!ctrl.CurrentUser.InRole(reqrole)) {
//some code to redirect this to a certain page
}
base.OnActionExecuting(filterContext);
}
}
,並在GeneralController來獲得當前用戶
public class GeneralController : Controller
private User currentUser;
public User CurrentUser {
get {
if (currentUser != null)
return currentUser;
int currentUserId = Convert.ToInt32(httpContext.User.identity.Name);
if (currentUserId != 0) {
this.currentUser = Tds.Users.FirstOrDefault(u => u.Id == currentUserId)
}
return currentUser;
}
}
,並在將繼承這個屬性控制器
[PermissionRequired(Role.Moderator)]
public class SomeControllerThatNeedsPermission
{
[PermissionRequired(Role.SuperAdmin)]
public ActionResult SomeActionThatNeedsPermission()
{
}
}
所以,任何人的幫助被讚賞..甚至評論或想法a熱烈歡迎:D
非常感謝!
我寫了類似的東西,並堅持它在SourceForge;它可能會爲你節省一些時間。 https://sourceforge.net/projects/simplerolesecur/ –
(不是一個實際的解決方案,所以這是一個評論,而不是)有一個偉大的博客文章,有些事情要記住或知道[這裏](http:// blogs.msdn.com/b/rickandy/archive/2011/05/02/securing-your-asp-net-mvc-3-application.aspx)。我發現它在最近的一個項目中非常有幫助。 –
@rick liddle:這是一篇非常有用的文章。謝謝! -Jeremy:我會看看:) – gdubs