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-mvc-3 – 如何使用下拉列表的数据注释?
- asp.net-core – ClaimTypes的ASP.NET要求
- asp.net-mvc-4 – 带有TextBoxFor的MVC在循环中具有相同的i
- asp.net-mvc-3 – MVC脚手架问题
- asp.net – InvalidOperationException:在程序集上找不到“
- 如何在ASP.NET应用程序中记录错误(异常)?
- 如何检查ASP.Net中客户端(JavaScript)的Page.Validate()?
- asp.net – 如何使用Excel服务器端?
- 如何检测当前应用程序池是否在IIS7.5和Asp.Net 3.5中清理
- asp.net-mvc – 用于控件名称的参数化前缀的局部视图
