网页登录界面进行登录后,如果不进行登录校验,则在其它页面无法知道该用户是否进行了登录。故需要对用户的登录进行校验,这里将介绍两种登录校验的方式。分别为利用自定义行为过滤器进行登录校验,另外一种是构建控制器基类的校验实现子类的登录校验。具体实现如下:
这里以Session的方式进行用户登录信息存储为例进行两种方式的介绍:
  方式一:自定义行为过滤器校验:
第一步:在用户登录成功后,将用户信息添加到Session中:
//对提交的用户名和密码进行验证
public ActionResult ProcessLogin()
{
#region 验证码
//1、验证验证码是否正确
string inputNum = Request["vCode"];
string sessionNum = Session["VNum"] as string;
//校验完session后清空session
Session["VNum"] = null;
if (string.IsNullOrEmpty(sessionNum))
{
return Content("验证码输入错误!");
}
if (inputNum != sessionNum)
{
return Content("验证码输入错误!");
}
#endregion
#region 登录验证
string uid = Request["LoginCode"];
string pwd = Request["LoginPwd"];
short delNum=(short) DelFlagEnum.Normal;
UserInfo users= service.GetEntities(u => u.UName == uid && u.Pwd == pwd && u.DelFlag == delNum).FirstOrDefault();
if (users==null)
{
return Content("用户名或密码错误,请重新登录!");
}
            Session["userLogin"] = users;   //将登录的用户信息存储到Session中
return Content("OK");
#endregion
}
第二步:创建自定义行为过滤器类:LoginCheckFilterAttribute.cs具体代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace MyOA.UI.Models
{
public class LoginCheckFilterAttribute:ActionFilterAttribute
{
//为实现该过滤器的类提供设定值,以判定是否需要进行登录验证
public bool isChecked { get; set; }
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
base.OnActionExecuting(filterContext);
if (isChecked)
{
// 校验用户是否登录,如果没有对应的Session存储登录对象,则表示没有进行登录,则直接将页面跳转到登录页面
if (filterContext.HttpContext.Session["userLogin"] == null)
{
filterContext.HttpContext.Response.Redirect("/UserLogin/Login");
}
}
}
}
}
第三步:对要进行登录验证的类或者方法添加上述自定义登录行为过滤器
using MyOA.UI.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace MyOA.UI.Controllers
{
public class HomeController : Controller
{
[LoginCheckFilter(isChecked=true)]
public ActionResult Index()
{
return View();
}
}
}
利用自定义行为过滤器进行登录校验的主要步骤如上。如果某个类或者某个方法不需要实现登录校验,则将isCheck赋值为false即可。
方式二:建立控制器基类实现子类的登录校验
第一步:还是和上面的方法一样,将用户的登录信息存储到Session中;
第二步:构建基类控制器BaseController,并在基类控制器中实现登录校验:
using Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace MyOA.UI.Controllers
{
public class BaseController : Controller
{
//实现其它地方对登录用户信息的快速调用
public UserInfo userInfoLogin { get; set; }
//设定判定是否需要进行登录校验的标志
public bool isCheckLogin = true;
protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
base.OnActionExecuting(filterContext);
if (isCheckLogin)
{
if (filterContext.HttpContext.Session["userLogin"] == null)
{
filterContext.HttpContext.Response.Redirect("/UserLogin/Login");
}
else
{
userInfoLogin = filterContext.HttpContext.Session["userLogin"] as UserInfo;
}
}
}
}
}
第三步:将需要进行登录校验的类继承自BaseController基类控制器:
using MyOA.UI.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace MyOA.UI.Controllers
{
public class HomeController : BaseController
{
public ActionResult Index()
{
return View();
}
}
}

网页用户登录权限校验的两种实现方式相关推荐

  1. 权限控制的两种主要方式详述

    权限控制的两种主要方式详述 粗粒度URL级别的权限控制 权限控制主要分为粗粒度URL级别的权限控制和细粒度的方法级别权限控制. 我们在后台系统的操作,无论 是点击一个按钮,还是点击一个菜单项,都是在访 ...

  2. 在前端网页设计中 align 和 valign 两种对齐方式的不同取值区分(持续补充)

    文章目录 前言 一.align 与 valign 的对齐方式与取值 二.常见应用区分整理 2.1.H5 页面设计的取值 2.2.表格标题的取值 2.3.表格属性的取值 总结 前言 不知道大家在学习 H ...

  3. java springmvc权限校验_springmvc拦截器实现用户登录权限验证

    实现用户登录权限验证 先看一下我的项目的目录,我是在intellij idea 上开发的 1.先创建一个User类 1 package cn.lzc.po; 2 3 public class User ...

  4. mysql php gpl_MySQL_MySQL数据库远程访问权限如何打开(两种方法),下载GPL版本安装MySQL Community - phpStudy...

    MySQL数据库远程访问权限如何打开(两种方法) 下载GPL版本安装 MySQL Community Edition(GPL) Community (GPL) Downloads » 在我们使用mys ...

  5. Windows校验文件哈希hash的两种常用方式

    大家经常都到哪儿去下载软件和应用程序呢?有没想过下载回来的软件.应用程序或资源是否安全呢?在 Windows 10 和 Office 2016 发布当初,很多没权限的朋友都使用第三方网站去下载安装映像 ...

  6. Spring Boot 统一功能处理(用户登录权限效验-拦截器、异常处理、数据格式返回)

    文章目录 1. 统一用户登录权限效验 1.1 最初用户登录权限效验 1.2 Spring AOP 统一用户登录验证 1.3 Spring 拦截器 1.4 练习:登录拦截器 1.5 拦截器实现原理 1. ...

  7. Springboot自定义注解实现用户登录状态校验(一)

    Springboot自定义注解实现用户登录状态校验(一) 拦截器方式 定义注解类 import java.lang.annotation.*;/*** @author:小飞猪* @date:2020/ ...

  8. Spring MVC拦截器实现用户登录权限验证案例

    本节将通过拦截器来完成一个用户登录权限验证的 Web 应用 springMVCDemo07,具体要求如下:只有成功登录的用户才能访问系统的主页面main.jsp,如果没有成功登录而直接访问主页面,则拦 ...

  9. java spring登录验证_springMVC 用户登录权限验证实现过程解析

    通过上网搜资料显示,使用filter和interceptor都可以实现.不过推荐使用interceptor. 下面就使用Interceptor实现用户登录权限验证功能. 拦截器需要实现Inceptor ...

最新文章

  1. 推荐一些视觉SLAM的深度学习方法(上)
  2. java ipmitool_ipmitool使用手册(20200401)
  3. Django xadmin 后台自定义action 动作
  4. 中止取消ajax请求,IE7下的bug解决
  5. Win32系统下安装Win64补充说明
  6. RocketMQ削峰
  7. Android 给按钮绑定事件
  8. div生成图片_Vue生成分享海报(含二维码)
  9. 全奖博士招生,荷兰根特大学 ​IDLab 实验室,手语手势识别方向
  10. Android功耗(16)---自启动管理
  11. 微信挑战者飞聊被下架后 再度火速上线 尚能一战否?
  12. 《Linux内核分析》第一周学习报告
  13. Python删除文件中含有特定值的行
  14. 能力提升综合题单 Part 8.7 图的连通性相关
  15. 服务器双硬盘系统安装系统安装,固态机械混合安装教程!双硬盘安装系统的方法...
  16. 禁用惠普服务器自动开机,惠普商用台式机如何在BIOS中设置通电自动开机
  17. ogg格式怎么转mp3格式?
  18. java 复制网页文字_网页文字复制不了?你这样做,全网文字任你免费复制!快get!...
  19. rpc wmi 服务不可用_wmi服务是什么?wmi服务常见问题及解决技巧!
  20. 如何绘制四线3格拼音

热门文章

  1. 构成中学计算机教学系统的要素包括,教学策略就是对完成特定的教学目标而采用的教学活动的()要素的总体考虑...
  2. 名字竞技场 V3.0
  3. Java 操作 word 文档 (三)段落Paragraphs,文本加粗、斜体、字体、字体大小、复杂文本
  4. 基于Vue+SpringCloudAlibaba微服务电商项目实战-商品服务-015:亿万级别商品详情页面实现动态优化
  5. PS中“曲线”【ctrl+M】的作用【加强对曲线的使用】
  6. 孟岩:什么是高级C++?
  7. 【零基础】极星量化小技巧:启动时自动轮换合约
  8. Conan软件包管理器的Qt 6.2.4软件包
  9. 【计算机网络】以太网供电PoE - Power over Ethernet
  10. 泰坦x 和泰坦black 性能分析