asp.net – 授权属性中的UrlHelper和ViewContext
发布时间:2020-05-24 15:23:00 所属栏目:asp.Net 来源:互联网
导读:我有一个我无法解决的场景: 我正在为mvc创建自己的自定义授权属性.我想添加的主要功能是能够更改用户重定向的位置(如果用户不在某个角色中).我不介意系统将它们发送回登录页面,如果它们未经过身份验证,但我想选择在哪里发送它们,如果它们经过身份验证但不允
|
我有一个我无法解决的场景: 我正在为mvc创建自己的自定义授权属性.我想添加的主要功能是能够更改用户重定向的位置(如果用户不在某个角色中).我不介意系统将它们发送回登录页面,如果它们未经过身份验证,但我想选择在哪里发送它们,如果它们经过身份验证但不允许访问该操作方法. 这是我想做的事情: public class CustomAuthorizeAttribute : AuthorizeAttribute
{
public string Action;
public string Controller;
protected override bool AuthorizeCore(System.Web.HttpContextBase httpContext)
{
// if User is authenticated but not in the correct role
string url = Url.Action(this.Action,this.Controller);
httpContext.Response.Redirect(url);
}
}
作为一个额外的奖励,我希望在进行重定向之前可以访问ViewContext和TempData. 有关如何在属性中实例化UrlHelper和ViewContext的任何想法? 解决方法您可以覆盖OnAuthorization方法:
public override void OnAuthorization(AuthorizationContext filterContext)
{
if (filterContext == null)
{
throw new ArgumentNullException("filterContext");
}
// Call the AuthorizeCore which should return true or false
if (!this.AuthorizeCore(filterContext.HttpContext))
{
filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary()
{
{ "controller","home" },{ "action","about" },{ "id","foo" },});
}
}
就ViewData和TempData而言:filterContext.Controller.ViewData和filterContext.Controller.TempData应该在OnAuthorization方法中工作.最后,如果你想使用UrlHelper(在这种情况下没有必要,因为RedirectToRouteResult更好)你可以实例化它: var urlHelper = new UrlHelper(filterContext.RequestContext); (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- Asp.net Razor,语法错误 – onclick事件参数
- asp.net – 如何在IIS 7.5中配置应用程序池在停止时自动重新
- asp.net-mvc – “无法同时分析32位和64位应用程序”错误
- asp.net-mvc – 如何在ASP.NET MVC视图中访问路由参数?
- asp.net-mvc – 如何提交本地jqgrid数据和表单输入元素
- 使用ASP.NET创建缩略图的最佳方法是什么?
- asp.net – 从单独的配置文件中读取设置
- asp.net-mvc – 如何从验证摘要中删除列表
- asp.net-mvc – ASP.NET MVC 3用户验证
- asp.net – 如何添加.aspx页面到现有的MVC 4项目?
推荐文章
站长推荐
热点阅读
