欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-06-29 19:46:57
用最简单的session方式记录用户登录状态 1.添加defaultcontroller控制器,重写onactionexecuting方法,每次访问控制器前触发...

用最简单的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方式容易丢失

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