• asp.net Core 2.0 MVC为Controller或Action添加定制特性实现登录验证


    前言:最近在倒腾 微软的新平台 asp.net Core 2.0,在这个过程中有些东西还是存在差异。下面是我在学习过程的一点笔记。有不妥之处,望各位大虾指正!

    一、先创建一个控制器继承于Controller的BaseController,代码如下:

    using System.Linq;
    using Microsoft.AspNetCore.Mvc;
    using Microsoft.AspNetCore.Mvc.Filters;
    using Zen.Core.Models;
    using Zen.Core.Comm;
    using Microsoft.AspNetCore.Mvc.Controllers;
    
    namespace Zen.Web.Controllers
    {
        public class BaseController : Controller
        {
            public override void OnActionExecuting(ActionExecutingContext context)
            {
                base.OnActionExecuting(context);
                bool result = false;
    
                var attrib = (context.ActionDescriptor as ControllerActionDescriptor).MethodInfo.
                   GetCustomAttributes(typeof(CheckLogin), false).FirstOrDefault(); var attr = attrib as CheckLogin; if (attr != null) { if (attr.IsNeedLogin) { result = true; } else { result = false; } } if (!IsLogin() && result) { //如果没有登录,则跳至登陆页 context.Result = Redirect("GoogleApiBase/Login"); } } protected bool IsLogin() { Administrator adminobj = HttpContext.Session.GetObjectFromJson<Administrator>("admin"); //获取登录session if (adminobj != null) return true; return false; } } }

    二、再创建一个验证类CheckLogin,代码如下:

    using System;
    
    namespace Zen.Web.Controllers
    {
        public sealed class CheckLogin : Attribute
        {
            public bool IsNeedLogin = false;
    
            public CheckLogin(bool isNeed)
            {
                this.IsNeedLogin = isNeed;
            }
        }
    }

    三、开始应用,代码如下:

    public class TestController : BaseController
    {
        [CheckLogin(false)]
        public IActionResult Index()
        {
            //逻辑代码
        }
    }
  • 相关阅读:
    Notepad++可以结合命令行来搭建各种编程环境
    installshield中如何执行批处理 还有设置环境变量
    intallshield各种控制语句
    实际应用中installshield的事件处理
    intallshield各种控制语句
    java 沙箱
    手写installshield入门
    installshield安装程序自注册dll
    实际应用中installshield的事件处理
    installshield中如何执行批处理 还有设置环境变量
  • 原文地址:https://www.cnblogs.com/CHNMurphy/p/7527494.html
Copyright © 2020-2023  润新知