RMS.Manage.Web/Models/RMSAuthorizeAttribute.cs

(开头部分) 4KB

这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Principal;
using System.Web;
using System.Web.Mvc;
using RMS.Manage.Web.Controllers;
using RMS.Common;

namespace RMS.Manage.Web.Controllers
{
    public class RMSAuthorizeAttribute : System.Web.Mvc.AuthorizeAttribute
    {
        public override void OnAuthorization(AuthorizationContext filterContext)
        {
            base.OnAuthorization(filterContext);
        }
        /// <summary>
        /// 重写授权检查
        /// </summary>
        /// <param name="httpContext">Http内容</param>
        /// <returns>是否授权</returns>
        protected override bool AuthorizeCore(HttpContextBase httpContext)
        {
            //var nlog = LogManager.GetCurrentClassLogger();
            #region 检测Action是否包含匿名访问标签
            if (httpContext.AllowAsyncDuringSyncStages)
            {
                return true;
            }
            #endregion
            
            #region httpContext验证
            if (httpContext == null)
            {
                throw new ArgumentNullException("httpContext");
            }
            #endregion
            #region 登录验证
            IPrincipal user = httpContext.User;
            if (!user.Identity.IsAuthenticated)
            {
                return false;
            }
            #endregion
            #region 访问链接权限认证
            string requestUrl = HttpContext.Current.Request.Url.AbsolutePath;//站点名+页面名
            var virtualDirectory = ConfigHelper.GetAppValue("VirtualDirectory");
            if (requestUrl.StartsWith(virtualDirectory))//如果有虚拟目录需要删除虚拟目录
            {
                requestUrl = requestUrl.Substring(virtualDirectory.Length);
            }
            #region 首页不进行权限认证
            if (string.IsNullOrWhiteSpace(requestUrl))
            {
                return true;
            }
            requestUrl = "/" + requestUrl.Trim('/').ToLower();
            if (requestUrl == "/" || requestUrl == "/home" || requestUrl == "/home/index" || requestUrl == "/index/default")
            {
后面还有 68 行代码,解锁后查看完整代码

24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明

AI 解读 AI

登录后可用,每次 10 算力,解读结果公开显示在下面。

还没有人解读过这个文件。