之前不知道有这个特性,还翻查代码,找各种方法

实现访问某些控制器,需要登录

方法如下:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Web.Mvc;

using Microsoft.AspNet.Identity;

namespace Star.BackPortal.Controllers {

[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, Inherited = false)]

public sealed class CheckLogin : Attribute {

public bool IsNeedLogin = false;

public CheckLogin(bool isNeed) {

this.IsNeedLogin = isNeed;

}

}

public class ParentController : Controller {

protected override void OnActionExecuting(ActionExecutingContext filterContext) {

base.OnActionExecuting(filterContext);

bool result = false;

//controller上是否有特性CheckLogin,以及特性的IsNeedLogin值

var controllerAttrs = filterContext.ActionDescriptor.ControllerDescriptor.GetCustomAttributes(typeof(CheckLogin), false);

if (controllerAttrs.Count() > 0) {

var conAttr = controllerAttrs[0] as CheckLogin;

if (conAttr != null) {

if (conAttr.IsNeedLogin)

result = true;

else

result = false;

}

}

//action上是否有特性CheckLogin,以及特性的IsNeedLogin值

var actionAttrs = filterContext.ActionDescriptor.GetCustomAttributes(typeof(CheckLogin), false);

if (actionAttrs.Count() > 0) {

var attr = actionAttrs[0] as CheckLogin;

if (attr != null) {

if (attr.IsNeedLogin)

result = true;

else

result = false;

}

}

if (!IsLogin() && result) {

//如果没有登录,则跳至登陆页

filterContext.Result = Redirect("/Account/Login");

}

}

protected bool IsLogin()

{

string userId = User.Identity.GetUserId();

if (userId != null)

return true;

return false;

}

}

}

后来才发些,微软本身就做了。只要在控制器加上[Authorize],就可以实现登录验证了,哎。。。

MVC中方便的[Authorize],加上这特性,就可以加上登录验证相关推荐

  1. MVC中 数据底层联合JQUERY实现动态的安全的验证机制

    实体的验证分部类定义如下 前台controller里进行数据有效性的验证,成功就进行数据处理,不成功就返回错误 前台页面配合JQuery强大的验证功能,实现动态验证 MVC集成表单验证输出单元,显示验 ...

  2. [MVC学习笔记]5.使用Controller来代替Filter完成登录验证(Session校验)

    之前的学习中,在对Session校验完成登录验证时,通常使用Filter来处理,方法类似与前文的错误日志过滤,即新建Filter类继承ActionFilterAttribute类,重写OnAction ...

  3. 【转载】MVC中 数据底层联合JQUERY实现动态的安全的验证机制

    实体的验证分部类定义如下 前台controller里进行数据有效性的验证,成功就进行数据处理,不成功就返回错误 前台页面配合JQuery强大的验证功能,实现动态验证 MVC集成表单验证输出单元,显示验 ...

  4. MVC中获取模型属性的Range和StringLength验证特性设置

    MVC中的客户端及服务端模型验证信息都以ModelMetadata类型作为承载,在获得属性的ModelMetadata之后(还不知道怎么获取ModelMetadata的童鞋请自行恶补),我们可以轻松得 ...

  5. 解读ASP.NET 5 MVC6系列(17):MVC中的其他新特性

    原文:解读ASP.NET 5 & MVC6系列(17):MVC中的其他新特性 (GlobalImport全局导入功能) 默认新建立的MVC程序中,在Views目录下,新增加了一个_Global ...

  6. Spring 2.5:Spring MVC中的新特性

    转载说明:infoQ就是牛人多,看人家去年就把Spring2.5注视驱动的MVC写出来了,还是这么详细,我真是自叹不如,今天偶尔看到这篇文章非常认真的拜读了2遍,简直是茅厕顿开啊....\(^o^)/ ...

  7. MVC中一个表单实现多个提交按钮(一个action搞定添删改)

    默认情况下,一个表单只能有一个提交事件,这不难理解,但有时我们需要有多个实现,早在ASP时代就可以实现这个功能,难道到了MVC时代后,功能削减了?当然不是,这和MVC本身有关,微软在这方面比较提倡一个 ...

  8. ASP.NET MVC中你必须知道的13个扩展点

         ScottGu在其最新的博文中推荐了Simone Chiaretta的文章13 ASP.NET MVC extensibility points you have to know,该文章为我 ...

  9. Spring MVC中的视图解析ViewResolver

    http://blog.csdn.net/prince2270/article/details/5891085 在Spring MVC中,当Controller将请求处理结果放入到ModelAndVi ...

最新文章

  1. 我们破解了几乎所有智能手机的人脸识别,唯独没有iPhone
  2. 第一百一十四节,JavaScript文档对象,DOM进阶
  3. 程序间数据共享与传递(1):EXPORT/IMPORT、SAP/ABAP Memory
  4. ice 服务java连接,“先进的互联互通技术”–使用ice联通php和java [part 1 server]
  5. 【Html】div 加载 html页面的方法
  6. 条件变量的陷阱,惊群效应(转载)
  7. 从 5G 到智能革命,这篇文章值得一看
  8. EDIUS插件如何安装?
  9. H5做linux界面开发,如何利用HTML5打造桌面应用?
  10. java时间管理番茄时钟小程序源码
  11. 2000坐标系xy坐标几位_2000坐标系(2000坐标系x和y坐标几位数)
  12. Model-Free Adaptive Predictive Control
  13. 【bzoj1406】【AHOI2007】【密码箱】【数论】
  14. dmac学习之基于LLI的multi block tranfer验证
  15. android解决方法数超过65536问题,(满则溢)Android AS打包提示方法数超65536的解决方法...
  16. 楷书书法规则_楷书的结构法则
  17. ARM USB蓝牙,Bluez 移植。
  18. 【Excel】工作中会用到的excel操作和技巧
  19. 什么是seo?什么是pr值?
  20. 声波正演c语言程序,二维频率域声波方程正演模拟

热门文章

  1. 使用Matlab和Minepy工具箱做变量的互信息MIC (maximal information coefficient ) 分析
  2. 国考证监会计算机考试真题
  3. SRS十周年杭州站沙龙技术备忘录
  4. n个元素进栈,共有多少种出栈顺序?
  5. 89c52单片机控制两个步进电机正反转加减速(程序+仿真)
  6. WindowsServer2012r2远程桌面多用户同时远程连接设置
  7. how2j离线资源,2018,12月26最新
  8. 微擎系统内置的所有函数大全,一共5435个,可以当作微擎开发函数手册来查看(下篇)
  9. 另一条路去IOE:全内存数据库弯道超车
  10. RxSwift--RxSwift简介