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 />" ...
随机推荐
- lua package.path的使用
需要用lua写一个工具,c++调用lua,然后这个lua要require其他lua脚本,在主lua里面设置package.path,但一直都失败,甚至lua都无法编译通过. project_path ...
- OpenGL ES 的三种变量类型(uniform,attribute和varying)
1.uniform变量 uniform变量是外部application程序传递给(vertex和fragment)shader的变量.因此它是application通过函数glUniform**()函 ...
- 四元数(Quaternion)详细讲解以及在图形图像编程中的使用
关于四元数介绍可以直接看wiki,写的很详细了. 四元数的基本运算:http://www.linuxgraphics.cn/opengl/opengl_quaternion.html,代码有些问题. ...
- 【HTML】Advanced1:Text: Time, Mark, and "Presentational"
1.Exploring the depths of HTML5 2.</time> <p>Written by Doctor Who on <time datetime= ...
- vijosP1016 北京2008的挂钟
vijosP1016 北京2008的挂钟 题目链接:https://vijos.org/p/1016 [思路] Dfs. 对操作搜索更加优秀,所以采用搜索每一个操作的使用次数,因为操作数为4则相当于没 ...
- 【原创】一个复制本地文件到Hadoop文件系统的实例
import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net ...
- strip, 关于去除目标文件种的不必要信息
对于so动态库及可执行文件,可以直接调用不带参数的strip (-s, 即--strip-all)去除大多数不必要的信息.因为so库非常标准,所以strip之后仍然可以进行完美的动态连接:而可执行文件 ...
- Only one database connection at a time is supported
Only one database connection at a time is supported 在网上找到了2个方法: 1. VSS在使用过程中,尤其是数据迁移的过程中,可能会出现上述情况 ...
- iOS网络编程(三) 异步加载及缓存图片---->SDWebImage
@SDWebImage提供一个UIImageView的类别以支持加载来自网络的远程图片.具有缓存管理.异步下载.同一个URL下载次数控制和优化等特征. @SDWebImage的导入1.https:// ...
- Python队列服务 Python RQ Functions from the __main__ module cannot be processed by workers.
在使用Python队列服务 Python RQ 时候的报错: Functions from the __main__ module cannot be processed by workers. 原因 ...