Asp.net MVC中的全局权限验证方法及实现

本文介绍了在ASP.NET MVC中实现全局权限验证的方法,包括AuthenticationAsserts授权验证断言、AuthorizationFilter验证过滤器、自定义ControllerActionInvoker以及DefaultControllerFactory。通过这些组件,可以在每个Action请求前进行用户身份和权限的验证,确保数据访问的安全性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

       开发过MVC的人都知道,MVC是三个单词的缩写,分别为: 模型(Model),视图(View)和控制Controller)。 MVC模式的目的就是实现Web系统的职能分工。 Model层实现系统中的业务逻辑。 View层用于与用户的交互。 Controller层是Model与View之间沟通的桥梁,它可以分派用户的请求并选择恰当的视图以用于显示,同时它也可以解释用户的输入并将它们映射为模型层可执行的操作。

        我们的权限验证就添加在控制(Controller)层,这是必然的。验证的机制就是,每一次客户端对于Controller里边的Action的请求之前,都会先验证用户的身份,也就是说,用户每一次对于数据的请求,都会验证当前用户是否有使用该数据的权限。

本文所介绍的MVC身份验证大致分为以下四个部分:

AuthenticationAsserts         授权验证的相关断言

AuthorizationFilter               验证过滤器的构造函数

ControllerActionInvoker      自定义ControllerActionInvoker

DefaultControllerFactory     自定义的ControllerFactory,可以通过ControllerFactory向Controller中植入相关的ActionInvoker

下边先从授权验证的相关断言说起,验证断言的作用是:确定用户的请求是否需要验证和确认是否以验证过。它主要包含以下几个方法:精确的权验验证,确定系统是否需要验证,确定用户是否已经通过验证,以及判断用户是否拥有访问该URL的权限。下边看看代码:

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web.Mvc;
using Configuration;
using Membership;
using System.Web;
using User.ServiceImp;
using MVCExtension;

namespace Authorization
{
    /// <summary>
    /// 授权验证的相关断言。
    /// </summary>
    public class AuthenticationAsserts
    {
        /// <summary>
        /// 确认系统是否需要权限验证(系统在开发期间,为了开发调试方便,可以不需要权限验证,而在开发完成后,套用框架后才要求验证)。
        /// </summary>
        /// <returns>如果需要验证,则返回True,否则返回False</returns>
        public static bool IsRequireAuthenticate()
        {
            try
            {
             return  bool.Parse(ConfigConstString.Instance.IsSOAVlidate);
            }
            catch
            {
                return false;
            }
        }
        
        /// <summary>
        /// 判断用户是否已经通过登录验证
        /// </summary>
        /// <param name="controllerContext">Controller的上下文</param>
        /// <returns>如果通过验证,返回True,否则返回False</returns>
        public static bool IsAuthenticated(ControllerContext controllerContext)
        {
            retur
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值