mvc5权限管理(简单登录):ActionFilterAttribute
效果图:



1.控制器
public ActionResult Index()
{
return View();
}
[HttpPost]
public ActionResult Index(User user)
{
if( LoginBLL.CheckLogin(ref user)) {
MyCookie.Write(user);
return Content("loging is ok <a href='/jq/List'>查看</a>");
}
else
{ return Content("login is error:");
}
} public ActionResult List() {
User user = MyCookie.ReadCurCookie();
string con = "card = " + user.card + " pwd = " + user.pwd + " lv =" + user.lv +"<p/>" ;
con += "<a href='write'>写</a><p/>";
con += "<a href='read'>读</a><p/>";
return Content(con);
} [MyValidate(PowType = )] //权限管理 权限为1
public ActionResult read() {
return Content("you can read");
}
[MyValidate(PowType = )] //权限管理 权限为2
public ActionResult write() {
return Content("you can write");
} public ActionResult error()
{
return Content("权限不够哦");
}
这个里面的模型类是:
public class User
{
public string card { get; set; }
public string pwd { get; set; }
public int lv { get; set; }
}
2.封装类
设置权限验证的类:
public class MyValidate : ActionFilterAttribute
{
public string Power;
public int PowType;
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
try
{
// user is cooke infor
User mod = MyCookie.ReadCurCookie();
// check login status
if (!LoginBLL.CheckLogin(ref mod))
{
filterContext.Result = new RedirectResult("/JQ/index");
}
// Pow type is control on [MyValidate(PowType = ?)] set values
if ( mod.lv != PowType)
{
filterContext.Result = new RedirectResult("/jq/error");
//this return route(
//new RedirectToRouteResult("Default", new RouteValueDictionary(new { controller = "Home", action = "Default" }));
}
}
catch
{
filterContext.Result = new RedirectResult("/JQ/Login");
}
} //当方法执行完毕
public override void OnActionExecuted(ActionExecutedContext filterContext)
{
base.OnActionExecuted(filterContext);
}
}
读写cookie
public class MyCookie
{
public static void Write(User user)
{
FormsAuthentication.SetAuthCookie(user.card, true, FormsAuthentication.FormsCookiePath);
//把用户对象保存在票据里
FormsAuthenticationTicket Ticket = new FormsAuthenticationTicket(, user.card, DateTime.Now, DateTime.Now.AddTicks(FormsAuthentication.Timeout.Ticks), false, MyJosnHelper.ToJson(user));
//MyJosnHelper.ToJson(user) 存储在票据的 UserData 处,这个地方怎么操作由你决定
//加密票据
string hashTicket = FormsAuthentication.Encrypt(Ticket);
HttpCookie userCookie = new HttpCookie(FormsAuthentication.FormsCookieName, hashTicket);
System.Web.HttpContext.Current.Response.Cookies.Add(userCookie);
} public static User ReadCurCookie()
{
try
{
var cookie = System.Web.HttpContext.Current.Request.Cookies[FormsAuthentication.FormsCookieName]; //的到Cookie
if (cookie == null)
return null;
var ticket = FormsAuthentication.Decrypt(cookie.Value); //解密票据
string str = ticket.UserData;
return MyJosnHelper.JsonDeserialize<User>(str);
}
catch
{
return null;
}
} public static void ReMoveCookie()
{
FormsAuthentication.SignOut();
}
}
模型json互转
public class MyJosnHelper
{
public static T JsonDeserialize<T>(string jsonString)
{
return JsonConvert.DeserializeObject<T>(jsonString);
} public static string ToJson(object obj)
{
JsonSerializerSettings settings = new JsonSerializerSettings();
settings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
return JsonConvert.SerializeObject(obj);
} }
2016.5.12 使用部分视图显示登陆效果

@using Microsoft.AspNet.Identity
@using ssm.Models
@using SSM.comm @if ( MyCookie.Read() != null )
{
<ul class="nav navbar-nav navbar-right">
<li>
@Html.ActionLink("你好," + MyCookie.Read().Adm_Name + "!", "Infor", "grzx", routeValues: null, htmlAttributes: new { title = "Manage" })
</li>
<li><a href="/home/out">注销</a></li>
</ul>
}
else
{
<ul class="nav navbar-nav navbar-right">
<li>@Html.ActionLink("登录", "Login", "Home", routeValues: null, htmlAttributes: new { id = "loginLink" })</li>
</ul>
}
扩展文档:
http://www.cnblogs.com/zxjyuan/archive/2009/08/21/1551196.html FormsAuthenticationTicket对象
代码包:效果在控制器 jq里面
http://pan.baidu.com/s/1kUx7I31
mvc5权限管理(简单登录):ActionFilterAttribute的更多相关文章
- Shiro 整合SpringMVC 并实现权限管理,登录和注销
Shiro 整合SpringMVC 并且实现权限管理,登录和注销 Apache Shiro是Java的一个安全框架.目前,使用Apache Shiro的人越来越多,因为它相当简单,对比Spring S ...
- Shiro 整合SpringMVC 并且实现权限管理,登录和注销
Apache Shiro是Java的一个安全框架.目前,使用Apache Shiro的人越来越多,因为它相当简单,对比Spring Security,可能没有Spring Security做的功能强大 ...
- linux100day(day7)--用户管理和权限管理简单介绍
系统基础 计算机的三大部件 CPU 内存 IO 总线 一般使用system call和api来调用硬件 一些基础命令, pwd 查看当前路径 cal 计算器 clock 时钟 hwclock 显示与设 ...
- 人人中的 shiro权限管理 简单说明
maven shiro包的引用路径 :C:\Users\yanfazhongxin\.m2\repository\org\apache\shiro\shiro-core\1.3.2\shiro-co ...
- 六、EnterpriseFrameWork框架基础功能之权限管理
回<[开源]EnterpriseFrameWork框架系列文章索引> 从本章开始进入框架的第二块内容“EnterpriseFrameWork框架的基础功能”,包括:权限管理.字典数据管理. ...
- EASYUI+MVC4通用权限管理平台
通用权限案例平台在经过几年的实际项目使用,并取得了不错的用户好评.在平台开发完成后,特抽空总结一下平台知识,请各位在以后的时间里,关注博客的更新. 1.EASYUI+MVC4通用权限管理平台--前言 ...
- (转)EASYUI+MVC4通用权限管理平台
原文地址:http://www.cnblogs.com/hn731/archive/2013/07/15/3190947.html 通用权限案例平台在经过几年的实际项目使用,并取得了不错的用户好评.在 ...
- Asp.Net MVC+BootStrap+EF6.0实现简单的用户角色权限管理10
今天把用户的菜单显示和页面的按钮显示都做好了,下面先来个效果图 接下来说下我实现的方法: 首先我在每个方法前面都加了这个属性, /// <summary> /// 表示当前Action请求 ...
- mvc5+ef6+Bootstrap 项目心得--身份验证和权限管理
1.mvc5+ef6+Bootstrap 项目心得--创立之初 2.mvc5+ef6+Bootstrap 项目心得--身份验证和权限管理 3.mvc5+ef6+Bootstrap 项目心得--WebG ...
随机推荐
- [Android]AndroidInject增加sqlite3数据库映射注解(ORM)
以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/3623050.html AndroidInject项目是我写的一 ...
- 【IOS】ios中NSUserDefault与android中的SharedPreference用法简单对比
以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/3405308.html 有Android开发经验的朋友对Shar ...
- dispatch
GCD提供了并管理着若干FIFO队列(queues),可以通过block的形式向这些FIFO序列提交任务.GCD同时维护着一个线程池,所有的任务在线程池的线程运行. 系统提供的队列 main queu ...
- 操作系统开发系列—13.g.操作系统的系统调用 ●
在我们的操作系统中,已经存在的3个进程是运行在ring1上的,它们已经不能任意地使用某些指令,不能访问某些权限更高的内存区域,但如果一项任务需要这些使用指令或者内存区域时,只能通过系统调用来实现,它是 ...
- Android时区及语言代码
1. 设置默认时区 PRODUCT_PROPERTY_OVERRIDES += \ persist.sys.timezone=Asia/Shanghai\ 注:搜索“persist ...
- commandline (命令行)登录mysql
mysql登录在命令行登录的时候是通过mysql的里面的程序的录的 其登录格式有两种:(在oracle上看到的是列出这两种,不要既有全参数名又有缩写参数名.) 1.全参数名登录释例 mysql --h ...
- c中的数组与字符串
一. 数组的基本概念 一个int类型的变量能保存一个人的年龄,如果想保存整个班的年龄呢? 1. 什么是数组 数组,从字面上看,就是一组数据的意思,没错,数组就是用来存储一组数据的 2. 数组的特点 l ...
- js 变量与值 连写
window.location.href="index.php?app=memberpmrecord&act=get_download&bname="+busine ...
- 文件与目录的rwx权限
r(Read,读取):对文件而言,具有读取文件内容的权限:对目录来说,具有浏览目录的权限. w(Write,写入):对文件而言,具有新增.修改文件内容的权限:对目录来说,具有删除.移动目录内文件的权限 ...
- Asp.net MVC使用Model Binding解除Session, Cookie等依赖
上篇文章"Asp.net MVC使用Filter解除Session, Cookie等依赖"介绍了如何使用Filter来解除对于Session, Cookie的依赖.其实这个也可以通 ...