.net MVC使用Session验证用户登录(4)

 更新时间:2018年04月10日 10:55:21   作者:清幽火焰  
这篇文章主要为大家详细介绍了.net MVC使用Session验证用户登录的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

用最简单的Session方式记录用户登录状态

1.添加DefaultController控制器,重写OnActionExecuting方法,每次访问控制器前触发

public class DefaultController : Controller
  {
    protected override void OnActionExecuting(ActionExecutingContext filterContext)
    {
      base.OnActionExecuting(filterContext);
      var controllerName = filterContext.ActionDescriptor.ControllerDescriptor.ControllerName;

      var userName = Session["UserName"] as String;
      if (String.IsNullOrEmpty(userName))
      {
        //重定向至登录页面
        filterContext.Result = RedirectToAction("Index", "Login", new { url = Request.RawUrl});
        return;
      }

    }
  }

2.登录控制器

public class LoginController : Controller
  {
    // GET: Login
    public ActionResult Index(string ReturnUrl)
    {
      if (Session["UserName"] != null)
      {
        return RedirectToAction("Index", "Home");
      }
      ViewBag.Url = ReturnUrl;
      return View();
    }

    [HttpPost]
    public ActionResult Index(string name, string password, string returnUrl)
    {
      /*
        添加验证用户名密码代码
      */
      Session["UserName"] = name;
      if (Url.IsLocalUrl(returnUrl) && returnUrl.Length > 1 && returnUrl.StartsWith("/") && !returnUrl.StartsWith("//") && !returnUrl.StartsWith("/\\"))
      {
        return Redirect(returnUrl);
      }
      else
      {
        return RedirectToAction("Index", "Home");
      }
    }

    // POST: /Account/LogOff
    [HttpPost]
    public ActionResult LogOff()
    {
      Session["UserName"] = null;
      return RedirectToAction("Index", "Home");
    }
  }

3.需要验证的控制器继承DefaultController

public class HomeController : DefaultController
  {
    public ActionResult Index()
    {
      return View();
    }
  }

这种方式适合比较小的项目

优点:简单,易开发
缺点:无法记录登录状态,而且Session方式容易丢失

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • .NET使用 OpenTelemetry Traces 追踪应用程序的方法

    .NET使用 OpenTelemetry Traces 追踪应用程序的方法

    OpenTelemetry Traces是OpenTelemetry提供的一种遥测数据类型,用于记录和描述在分布式系统中的单个操作或工作单元的生命周期,这篇文章主要介绍了.NET中使用OpenTelemetry Traces追踪应用程序,需要的朋友可以参考下
    2024-06-06
  • asp.net获取网站绝对路径示例

    asp.net获取网站绝对路径示例

    在编写 ASP.NET 应用程序的时候,有时为了更好地进行控制静态文件的路径,如在模板页或者用户控件中设置js或者css文件的路径等,采用绝对路径是难免的。下面就是几种获取绝对路径的几种方法
    2014-02-02
  • ASP.NET Core中使用默认MVC路由的配置

    ASP.NET Core中使用默认MVC路由的配置

    这篇文章主要介绍了ASP.NET Core中使用默认MVC路由的配置,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-02-02
  • .net core并发下线程安全问题详解

    .net core并发下线程安全问题详解

    这篇文章主要给大家介绍了关于.net core并发下线程安全问题的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用.net core具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-04-04
  • ASP.NET中生成Excel遇到的问题及改进方法

    ASP.NET中生成Excel遇到的问题及改进方法

    这是在项目中使用的生成Excel的一个方法(其实是我在网上收集),用了半年时间,并未出现异常情况。近日当我再次使用该方法生成Excel的时候出现了问题
    2011-02-02
  • ASP.NET Core Api网关Ocelot的使用初探

    ASP.NET Core Api网关Ocelot的使用初探

    这篇文章主要介绍了ASP.NET Core Api网关Ocelot的使用初探,帮助大家更好的理解和学习使用.NET技术,感兴趣的朋友可以了解下
    2021-03-03
  • Asp.net中static变量和viewstate的使用方法(谨慎)

    Asp.net中static变量和viewstate的使用方法(谨慎)

    如在页面中统计某个按钮被按下的次数,先在类中OnClick事件的处理过程前定义一static变量times,则每次调用该按钮的OnClick事件时,令times增1即可,非常方便,接下来详细介绍,感兴趣的朋友可以了解下
    2013-01-01
  • asp.net 页面间传值与跳转的区别

    asp.net 页面间传值与跳转的区别

    通过Server.Transfer("b.aspx") 与Response.Redirect("b.aspx")的区别
    2010-04-04
  • SqlCommandBuilder类批量更新excel或者CSV数据的方法

    SqlCommandBuilder类批量更新excel或者CSV数据的方法

    这篇文章主要介绍了SqlCommandBuilder类批量更新excel或者CSV数据的方法,需要的朋友可以参考下
    2015-10-10
  • asp.net gridview分页:第一页 下一页 1 2 3 4 上一页 最末页

    asp.net gridview分页:第一页 下一页 1 2 3 4 上一页 最末页

    这篇文章主要介绍了asp.net gridview分页:第一页 下一页 1 2 3 4 上一页 最末页,可使用上下键选中行,选中后点击修改,textbox获得gridview中的代码的数据,需要的朋友可以参考下
    2014-12-12

最新评论