MVC3中使用AuthorizeAttribute特性来完成登陆权限的验证
以前判断用户是否登录,判断用户Session是否为空,一般会在这个页面写使用:
if (HttpContext.Session.IsNewSession)
{
//todo Login
}
每个需要验证的页面这样验证,之后.net出现Attribute之后,如果判断某个页面的访问是否登录或者其他权限,只需要:
[UserAuthentication(UserToUrlEnum = UserToUrlEnum.Login)]
public ActionResult RegisterRedirect()
{
// code
}
public enum UserToUrlEnum
{
/// <summary>
/// 登录
/// </summary>
Login,
/// <summary>
/// 注册
/// </summary>
Register,
/// <summary>
/// 认证
/// </summary>
Certificate,
}
public class UserAuthentication : AuthorizeAttribute
{
const string DOMAIN = "http://www.test.com";
public UserToUrlEnum UserToUrlEnum { get; set; }
/// <summary>
/// 构造函数
/// </summary>
public UserAuthentication()
{
this.UserToUrlEnum = UserToUrlEnum.Login;
}
/// <summary>
/// 执行前验证
/// </summary>
public override void OnAuthorization(AuthorizationContext filterContext)
{
if (filterContext.HttpContext.Session.IsNewSession && !ClientHelper.Current.HasUser)
{
switch (this.UserToUrlEnum)
{
case UserToUrlEnum.Login:
{
VCommons.Http.CookieHelper.Write("return_page",
HttpContext.Current.Request.Url.ToString());
HttpContext.Current.Response.Redirect(DOMAIN +
"/Register/Login", true);
}
break;
case UserToUrlEnum.Register:
{
filterContext.HttpContext.Response.Redirect(DOMAIN +
"/Register/Register", true);
}
break;
}
}
else if (this.UserToUrlEnum == UserToUrlEnum.Certificate)
{
filterContext.HttpContext.Response.Redirect(DOMAIN + "/Register/Certificate");
}
}
}
MVC3中使用AuthorizeAttribute特性来完成登陆权限的验证的更多相关文章
- springboot项目中使用shiro实现用户登录以及权限的验证
欢迎大家加入我的社区:http://t.csdn.cn/Q52km 社区中不定时发红包 更加高级的验证用户权限:用户表.角色表.权限表.多表联合:https://blog.csdn.net/weixi ...
- ASP.NET MVC3中Model验证
原文:ASP.NET MVC3中Model验证 概述 上节我们学习了Model的数据在界面之间的传递,但是很多时候,我们在数据传递的时候为了确保数据的有效性,不得不给Model的相关属性做基本的数据验 ...
- 第九节:从源码的角度分析MVC中的一些特性及其用法
一. 前世今生 乍眼一看,该标题写的有点煽情,最近也是在不断反思,怎么能把博客写好,让人能读下去,通俗易懂,深入浅出. 接下来几个章节都是围绕框架本身提供特性展开,有MVC程序集提供的,也有其它程序集 ...
- Java语言中的面向对象特性总结
Java语言中的面向对象特性 (总结得不错) [课前思考] 1. 什么是对象?什么是类?什么是包?什么是接口?什么是内部类? 2. 面向对象编程的特性有哪三个?它们各自又有哪些特性? 3. 你知 ...
- ASP.NET MVC3中Controller与View之间的数据传递总结
一. Controller向View传递数据 1. 使用ViewData传递数据 我们在Controller中定义如下: ViewData["Message_ViewData& ...
- ASP.NET MVC3中Controller与View之间的数据传递
在ASP.NET MVC中,经常会在Controller与View之间传递数据,因此,熟练.灵活的掌握这两层之间的数据传递方法就非常重要.本文从两个方面进行探讨: 一. Controller向Vie ...
- MVC3中如何输出富文本
MVC3中如何输出富文本 在网站的文本输出中,经常会将DB里的文本输出到页面上. 一般来说是直接利用MVC3中的ViewBag将文本带到前台并表示, 或是是直接以<%:model.data%&g ...
- ASP.NET 5与MVC 6中的新特性
差点忘了提一句,MVC 6中默认的渲染引擎Razor也将得到更新,以支持C# 6中的新语法.而Razor中的新特性还不只这一点. 在某些情况下,直接在Web页面中嵌入某些JSON数据的方式可能比向服务 ...
- MVC3中,在control里面三种Html代码输出形式
MVC3中,在control里面三种Html代码输出形式:ViewData["msg"] = "<br /> Title <br />" ...
随机推荐
- 生产环境下JAVA进程高CPU占用故障排查
问题描述:生产环境下的某台tomcat7服务器,在刚发布时的时候一切都很正常,在运行一段时间后就出现CPU占用很高的问题,基本上是负载一天比一天高. 问题分析:1,程序属于CPU密集型,和开发沟通过, ...
- hdu-5364 Distribution money
http://acm.hdu.edu.cn/showproblem.php?pid=536 Distribution money Time Limit: 2000/1000 MS (Java/Othe ...
- hunnu Sum of f(x)
http://acm.hunnu.edu.cn/online/?action=problem&type=show&id=11546&courseid=0 Sum of f(x) ...
- [Irving]Android 常用布局之RelativeLayout
RelativeLayout相对布局 相对布局 RelativeLayout 允许子元素指定它们相对于其父元素或兄弟元素的位置,这是实际布局中最常用的布局方式之一. 它灵活性大很多,当然属性也多,操作 ...
- UI之UItableView重用机制的性能问题
*:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } ...
- A题进行时--浙大PAT 1001-1010
pat链接:http://pat.zju.edu.cn 1 #include<stdio.h> 2 int main(){ 3 int a,b; 4 int c; 5 while(scan ...
- HDOJ-ACM1010(JAVA) 奇偶剪枝法 迷宫搜索
转载声明:原文转自:http://www.cnblogs.com/xiezie/p/5568822.html 第一次遇到迷宫搜索,给我的感觉是十分惊喜的:搞懂这个的话,感觉自己又掌握了一项技能~ 个人 ...
- 小波变换和motion信号处理(二)(转)
写的太好,这是第二篇:http://www.kunli.info/2011/02/18/fourier-wavelet-motion-signal-2/ 这是<小波变换和motion信号处理&g ...
- IP头部校验(转)
一:原理 当发送IP包时,需要计算IP报头的校验和: 1.把校验和字段置为0: 2.对IP头部中的每16bit进行二进制求和: 3.如果和的高16bit不为0,则将和的高16bit和低16bit反复相 ...
- zoj 2588 Burning Bridges【双连通分量求桥输出桥的编号】
Burning Bridges Time Limit: 5 Seconds Memory Limit: 32768 KB Ferry Kingdom is a nice little cou ...