加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

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

发布时间:2020-12-15 23:36:01 所属栏目:asp.Net 来源:网络整理
导读:所以当用户登录时,我正在阅读有关登录循环的另一个问题,设置返回到登录后可能无法访问的URL(即管理页面,用户使用普通帐户登录) . WebForms下的解决方案似乎是使用UrlAuthorizationModule.CheckUrlAccessForPrincipal方法.但是,对于使用授权属性保护的操作方
所以当用户登录时,我正在阅读有关登录循环的另一个问题,设置返回到登录后可能无法访问的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
    ...
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读