MVC中方便的[Authorize],加上这特性,就可以加上登录验证
之前不知道有这个特性,还翻查代码,找各种方法
实现访问某些控制器,需要登录
方法如下:
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],加上这特性,就可以加上登录验证相关推荐
- MVC中 数据底层联合JQUERY实现动态的安全的验证机制
实体的验证分部类定义如下 前台controller里进行数据有效性的验证,成功就进行数据处理,不成功就返回错误 前台页面配合JQuery强大的验证功能,实现动态验证 MVC集成表单验证输出单元,显示验 ...
- [MVC学习笔记]5.使用Controller来代替Filter完成登录验证(Session校验)
之前的学习中,在对Session校验完成登录验证时,通常使用Filter来处理,方法类似与前文的错误日志过滤,即新建Filter类继承ActionFilterAttribute类,重写OnAction ...
- 【转载】MVC中 数据底层联合JQUERY实现动态的安全的验证机制
实体的验证分部类定义如下 前台controller里进行数据有效性的验证,成功就进行数据处理,不成功就返回错误 前台页面配合JQuery强大的验证功能,实现动态验证 MVC集成表单验证输出单元,显示验 ...
- MVC中获取模型属性的Range和StringLength验证特性设置
MVC中的客户端及服务端模型验证信息都以ModelMetadata类型作为承载,在获得属性的ModelMetadata之后(还不知道怎么获取ModelMetadata的童鞋请自行恶补),我们可以轻松得 ...
- 解读ASP.NET 5 MVC6系列(17):MVC中的其他新特性
原文:解读ASP.NET 5 & MVC6系列(17):MVC中的其他新特性 (GlobalImport全局导入功能) 默认新建立的MVC程序中,在Views目录下,新增加了一个_Global ...
- Spring 2.5:Spring MVC中的新特性
转载说明:infoQ就是牛人多,看人家去年就把Spring2.5注视驱动的MVC写出来了,还是这么详细,我真是自叹不如,今天偶尔看到这篇文章非常认真的拜读了2遍,简直是茅厕顿开啊....\(^o^)/ ...
- MVC中一个表单实现多个提交按钮(一个action搞定添删改)
默认情况下,一个表单只能有一个提交事件,这不难理解,但有时我们需要有多个实现,早在ASP时代就可以实现这个功能,难道到了MVC时代后,功能削减了?当然不是,这和MVC本身有关,微软在这方面比较提倡一个 ...
- ASP.NET MVC中你必须知道的13个扩展点
ScottGu在其最新的博文中推荐了Simone Chiaretta的文章13 ASP.NET MVC extensibility points you have to know,该文章为我 ...
- Spring MVC中的视图解析ViewResolver
http://blog.csdn.net/prince2270/article/details/5891085 在Spring MVC中,当Controller将请求处理结果放入到ModelAndVi ...
最新文章
- 我们破解了几乎所有智能手机的人脸识别,唯独没有iPhone
- 第一百一十四节,JavaScript文档对象,DOM进阶
- 程序间数据共享与传递(1):EXPORT/IMPORT、SAP/ABAP Memory
- ice 服务java连接,“先进的互联互通技术”–使用ice联通php和java [part 1 server]
- 【Html】div 加载 html页面的方法
- 条件变量的陷阱,惊群效应(转载)
- 从 5G 到智能革命,这篇文章值得一看
- EDIUS插件如何安装?
- H5做linux界面开发,如何利用HTML5打造桌面应用?
- java时间管理番茄时钟小程序源码
- 2000坐标系xy坐标几位_2000坐标系(2000坐标系x和y坐标几位数)
- Model-Free Adaptive Predictive Control
- 【bzoj1406】【AHOI2007】【密码箱】【数论】
- dmac学习之基于LLI的multi block tranfer验证
- android解决方法数超过65536问题,(满则溢)Android AS打包提示方法数超65536的解决方法...
- 楷书书法规则_楷书的结构法则
- ARM USB蓝牙,Bluez 移植。
- 【Excel】工作中会用到的excel操作和技巧
- 什么是seo?什么是pr值?
- 声波正演c语言程序,二维频率域声波方程正演模拟