asp.net-mvc – ASP.Net MVC如何确定用户是否可以访问一个URL?

前端之家收集整理的这篇文章主要介绍了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相关文章