asp.net-mvc-2 – RedirectToRouteResult如何工作?
发布时间:2020-12-16 03:46:20 所属栏目:asp.Net 来源:网络整理
导读:我目前正在使用RedirectToRouteResult,如下所示: public void OnAuthorization(AuthorizationContext filterContext){ User user = filterContext.HttpContext.Session["user"] as User; if (user == null || user.Role != expectedRole) { filterContext.R
我目前正在使用RedirectToRouteResult,如下所示:
public void OnAuthorization(AuthorizationContext filterContext) { User user = filterContext.HttpContext.Session["user"] as User; if (user == null || user.Role != expectedRole) { filterContext.Result = new RedirectToRouteResult( new RouteValueDictionary { {"controller",_controller},{"action",_action} }); } } 此代码位于我的CheckLoginAttribute类中. 我打算将它用作特定控制器操作的装饰器,例如: [CheckLogin(RolesEnum.Member,"MyController","MyAction")] public JsonResult GetNews() 所以基本上,我正在尝试将对GetNews()的调用短路,并在用户未登录时跳过执行操作.如果用户未登录,那么我希望它重定向到另一个操作. 将RedirectToRouteResult重定向到相应的操作服务器端,而不必通过客户端进行大循环(如重写窗口URL位置或类似的东西)?它是如何工作的? 解决方法
好吧,我已经把它弄清楚了.
所以基本上,它不是我需要的“重定向”.我正在寻找错误的地方来解决我的问题.我知道重定向意味着我必须进行几次客户端/服务器之旅才能返回json结果并且感觉不对. 我花了一段时间才意识到我可以将任何类型的结果传递给filterContext.Result. 我的错.我没有问正确的问题,因为我没有完全理解我面临的问题.经过大量的研究后,它归结为非常愚蠢. 最终解决方案是: public class CheckLoginAttribute : AuthorizeAttribute,IAuthorizationFilter { private RolesEnum expectedRole; public CheckLoginAttribute(RolesEnum role) { expectedRole = role; } public override void OnAuthorization(AuthorizationContext filterContext) { User user = filterContext.HttpContext.Session["user"] as User; if (user == null || user.Role != expectedRole) { filterContext.Result = new JsonResult() { JsonRequestBehavior = JsonRequestBehavior.AllowGet,Data = new LoginMessage() { IsValidLogin = false } }; } } } 现在我可以用这个来装饰我的动作方法: [CheckLogin(RolesEnum.Admin)] 多一点代码来避免ASP.NET Session窃取,我已经完成了. 我希望这能帮助那里的人.谢谢. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net – Dotnetopenauth,从facebook范围检索电子邮件
- asp.net-mvc – 具有软删除功能的通用存储库
- asp-classic – 使用FileSystemObject的文件权限 – CScrip
- asp.net – 选择性地将CSS应用于gridview中的一行
- asp.net-mvc-3 – 在IIS上运行时,ASP.NET Web应用程序中的模
- asp.net-mvc – 仅将值从EditorTemplate传递到其布局模板,在
- 在ASP.NET MVC视图页面中放置jQuery代码的位置?
- asp.net – GridView中的DropDownList SelectedIndexChange
- 解决T4模板的程序集引用的五种方案
- 一些.net中应该知道的问题
推荐文章
站长推荐
- asp.net-mvc – ASP.NET MVC – Elmah不工作,返回
- Programming学习1_ASP、JSP、PHP 、Perl、.NET 等
- asp.net-mvc-3 – 如何在剃须刀视图中设置复选框
- ASP.Net MVC 3奇怪的会话行为
- asp.net-mvc – ASP.NET MVC使用自定义角色提供程
- asp.net-mvc – 在asp .net mvc 5中显示外部网页
- asp.net-mvc – URL中的ASP.NET MVC冒号
- asp.net – 有没有办法在Web Api控制器中处理表单
- WF4 – 在asp.net中显示工作流图像,并突出显示活
- asp.net – 哪个最快?数据检索
热点阅读