asp.net-mvc – 在ASP.NET MVC中定制授权
我的Controller类用一个AuthorizeAttribute装饰以保护操作:
[Authorize(Roles = "User Level 2")] public class BuyController : Controller { ... } 每当一个动作被调用,但用户至少不是在“用户级别2”角色,他会被自动重定向到登录页面与一个url如下: http://localhost:1436/Account/Login?ReturnUrl=%2fBuy 如果用户已经登录,但没有正确的安全级别,这不是一个最佳的行为!显示一个通知用户关于缺少的级别而不是显示登录页面的页面将更有意义。 我可以做什么来自定义此行为? 解决方法
你可以像这样构建自己的authorize属性:
public class ClubAuthorizeAttribute : AuthorizeAttribute { public override void OnAuthorization(AuthorizationContext filterContext) { base.OnAuthorization(filterContext); if (filterContext.Cancel && filterContext.Result is HttpUnauthorizedResult) { filterContext.Result = new RedirectToRouteResult( new RouteValueDictionary { { "clubShortName",filterContext.RouteData.Values[ "clubShortName" ] },{ "controller","Account" },{ "action","Login" },{ "ReturnUrl",filterContext.HttpContext.Request.RawUrl } }); } } } 我用这个重定向到我在建立的俱乐部会员网站中的特定俱乐部。你可以根据你的需要来适应。 BTW,在我的情况下,我做重定向到登录页面,但我检查以查看用户是否被授权,如果是,显示一条消息,他们没有正确的权限。毫无疑问,你还可以添加一些东西到ViewData或TempData显示在页面上,但我还没有尝试过 编辑 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – Dotnetopenauth使用自定义身份提供者单点登
- asp.net-mvc-3 – 在MVC3中循环渲染部分视图
- 如何在ASP.NET MVC中禁用HTTP Keep-Alive?
- jqGrid过滤器工具栏显示单个列的搜索运算符选择器
- asp.net-mvc – 使用自定义格式的ASP.NET MVC ViewModel映射
- 浅谈ASP.NET Core 2.0 部分视图(译)
- asp.net – Ajax.ActionLink调用控制器两次
- asp.net – iTextSharp与iText
- asp.net – 在文件夹及其子文件夹上创建缓存依赖性
- asp.net-mvc – Ajax Request返回HTTP错误500,使用MVC和$.a
- asp.net-mvc – 在数据实体框架中显示名称
- asp.net – HttpContext.Cache到期
- asp.net – 使用ARR的IIS反向代理与目录级别有问
- asp.net-mvc – 为时区敏感的应用程序存储DateTi
- asp.net – 为jQuery寻找一个好的数据网格插件
- asp.net-mvc – 在MVC3或MVC4中检查项目构建
- asp.net-mvc – 在ASP.NET MVC项目和Cordova项目
- asp.net-mvc – 编译错误“无法在Web部署项目中加
- asp.net-mvc – ASP.Net MVC 3 – HandleError属
- 在asp.net按钮中添加图像和文本