asp.net-mvc – ASP.Net MVC如何确定用户是否可以访问一个URL?
所以当用户登录时,我正在阅读有关登录循环的另一个问题,设置返回到登录后可能无法访问的URL(即管理页面,用户使用普通帐户登录) .
WebForms下的解决方案似乎是使用UrlAuthorizationModule.CheckUrlAccessForPrincipal方法.但是,对于使用授权属性保护的操作方法的URL不起作用.我想我可以计算出URL所指向的方法,并反映出来解决我的问题 – 但是我似乎无法解决如何从路由表中获取这些信息. 任何人曾经与此合作过,还是为此做出了解决方案?如果我可以从URL获取路由信息,我想我可以工作的其余部分,但如果有人有一个通用的解决方案 – 即.一些隐藏的方法类似于前面提到的一个MVC,那么那将是完全令人敬畏的. 我不是问如何检查用户是否访问指定的Controller / Action对.我首先需要解决如何从RouteTable中获取Controller / Action对.所有背景故事的原因是,确实存在与UrlAuthorizationModule.CheckUrlAccessForPrincipal相当的MVC. 解决方法
你想解决什么问题?听起来,您可能会走向一条可以使用简单解决方案的复杂解决方案的路径.
如果用户在登录后没有访问该页面的权限,是否希望未登录的用户访问一个页面,而登录用户访问其他页面? 如果是这种情况,我可能会试图为这种情况创建另一个控制器,并在用户无权访问的任何地方重定向到该控制器.或者如果您使用自己的基本控制器,我将把功能放在那里. 然后控制器可以呈现所需的视图.例如,如果未登录的用户尝试访问页面,则可能会将其重定向到通用错误页面.如果用户登录,他们可能会被重定向到一个未授权的页面. 这与罗伯特的答案非常相似. 这是基本控制器的基本框架. public BaseController: Controller { ... // Some code public ActionResult DisplayErrorPage() { // Assumes you have a User object with a IsLoggedIn property if (User.IsLoggedIn()) return View("NotAuthorized"); // Redirect user to login page return RedirectToAction("Logon","Account"); } } 然后让我们说一个AdminController(从BaseController继承)的动作 public ActionResult HighlyRestrictedAction() { // Assumes there is a User object with a HasAccess property if (User.HasAccess("HighlyRestrictedAction") == false) return DisplayErrorPage(); // At this point the user is logged in and has permissions ... } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 我在哪里可以获得asp.net身份的rtm控制器模板?
- asp.net-mvc – ASP.Net MVC支持嵌套资源?
- asp.net-mvc – 用于轻量级内容编辑的MVC 5自定义HtmlHelpe
- asp.net-mvc – 如何在页面中显示ASP.net MVC项目版本?
- 浅谈ASP.NET Core 2.0 部分视图(译)
- ASP.NET Core 2.0 使用支付宝PC网站支付实现代码
- 阻止拦截ASP.NET Web API响应的FormsAuthenticationModule
- asp.net-mvc – MVC中的模型含义
- asp.net – 下拉列表重置SelectedValue
- entity-framework – ASP.NET-Identity限制UserName长度