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 – asp.net mvc:int值的千位分隔符
- asp.net-mvc – RedirectToAction()与View()和三元运算符?
- asp.net – HTTP错误403 – 禁止
- asp.net – 设置Html.Hiddenfor的值
- asp.net – 角色提供程序是否按请求缓存?
- asp.net – 通过Web服务访问连接字符串
- asp.net-mvc – 哪个更快asp.net mvc json或json.net?
- .net – App_LocalResources如何使用MVC?
- msbuild – 如果不指定目标框架,则不支持“发布”目标
- asp.net-mvc-3 – 如何在输出缓存中使用动态持续时间值?
- asp.net – 将涵盖.NET中的TDD,DDD和设计模式的图
- asp.net-mvc – MVC模式DDD模式
- asp.net-mvc – 当前上下文中不存在名称“ViewBa
- Asp.net从Https重定向到Http
- asp.net-mvc-3 – 在控制器动作中使用T4MVC生成U
- asp.net-mvc – ASP.NET MVC中的Page.EnableSess
- asp.net – 如何禁用viewstate的aspx页面?
- asp.net-mvc-3 – 在MVC3中使用自定义的IPrincip
- asp.net – 优化的捆绑包在从网站请求时返回404
- asp.net – Datareader,DataAdapter,Dataset,Dat
