效果图:

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的更多相关文章

  1. Shiro 整合SpringMVC 并实现权限管理,登录和注销

    Shiro 整合SpringMVC 并且实现权限管理,登录和注销 Apache Shiro是Java的一个安全框架.目前,使用Apache Shiro的人越来越多,因为它相当简单,对比Spring S ...

  2. Shiro 整合SpringMVC 并且实现权限管理,登录和注销

    Apache Shiro是Java的一个安全框架.目前,使用Apache Shiro的人越来越多,因为它相当简单,对比Spring Security,可能没有Spring Security做的功能强大 ...

  3. linux100day(day7)--用户管理和权限管理简单介绍

    系统基础 计算机的三大部件 CPU 内存 IO 总线 一般使用system call和api来调用硬件 一些基础命令, pwd 查看当前路径 cal 计算器 clock 时钟 hwclock 显示与设 ...

  4. 人人中的 shiro权限管理 简单说明

    maven  shiro包的引用路径 :C:\Users\yanfazhongxin\.m2\repository\org\apache\shiro\shiro-core\1.3.2\shiro-co ...

  5. 六、EnterpriseFrameWork框架基础功能之权限管理

    回<[开源]EnterpriseFrameWork框架系列文章索引> 从本章开始进入框架的第二块内容“EnterpriseFrameWork框架的基础功能”,包括:权限管理.字典数据管理. ...

  6. EASYUI+MVC4通用权限管理平台

    通用权限案例平台在经过几年的实际项目使用,并取得了不错的用户好评.在平台开发完成后,特抽空总结一下平台知识,请各位在以后的时间里,关注博客的更新. 1.EASYUI+MVC4通用权限管理平台--前言 ...

  7. (转)EASYUI+MVC4通用权限管理平台

    原文地址:http://www.cnblogs.com/hn731/archive/2013/07/15/3190947.html 通用权限案例平台在经过几年的实际项目使用,并取得了不错的用户好评.在 ...

  8. Asp.Net MVC+BootStrap+EF6.0实现简单的用户角色权限管理10

    今天把用户的菜单显示和页面的按钮显示都做好了,下面先来个效果图 接下来说下我实现的方法: 首先我在每个方法前面都加了这个属性, /// <summary> /// 表示当前Action请求 ...

  9. mvc5+ef6+Bootstrap 项目心得--身份验证和权限管理

    1.mvc5+ef6+Bootstrap 项目心得--创立之初 2.mvc5+ef6+Bootstrap 项目心得--身份验证和权限管理 3.mvc5+ef6+Bootstrap 项目心得--WebG ...

随机推荐

  1. 动态改变actionbar上menu的图标

    工作中遇到了一个需求是,在滚动的时候让actionbar上的图标进行变色.实现后在这里总结下思路. 一.先在主题中定义好Actionbar的style <style name="App ...

  2. 2016春招Android开发实习生(网易传媒)笔试

    一.单选题 1.下列不属于网络层协议的为 TCP IP IPX ICMP 2.关于activity的状态恢复,错误的是 onSaveInstanceState中,activity会自动收集恢复view ...

  3. iOS开发中常用的单例

    定义:一个类的对象,无论在何时创建.无论创建多少次,创建出来的对象都是同一个对象. 使用场景:当有一些数据需要共享给别的类的时候,就可以把这些数据保存在单例对象中.   关键代码: + (instan ...

  4. Android - 模块添加与编译

    Android5.1 Ubuntu14.04 Android系统编译依靠.mk文件 添加google服务 我们自己的ROM里没有google服务 完整的google包里包含google框架和各种服务, ...

  5. 数据持久化(一)--NSKeyedArchiver

    数据持久化:  将内存中的数据按某种格式存进磁盘 数据的种类: 1,结构化的数据 2, 字节流数据 结构化的数据        字节流 内存中结构化的数据   ->   磁盘,  叫: 归档 字 ...

  6. 【代码笔记】iOS-手机号验证

    代码: - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. // ...

  7. OC中的特有语法

    一. 分类-Category 1. 基本用途 如何在不改变原来类模型的前提下,给类扩充一些方法?有2种方式 l 继承 l 分类(Category) 2. 格式 分类的声明 @interface 类名  ...

  8. iOS开发之百度地图导航

    本篇主要讲述百度地图的导航功能: 第一步:在使用百度导航之前,我们需要在百度地图开放平台上下载导航的 SDK,共85.8M,网速不好的同学可提前准备好. 第二步:引入导航所需的系统包 将AudioTo ...

  9. Android中将xml布局文件转化为View树的过程分析(下)-- LayoutInflater源码分析

    在Android开发中为了inflate一个布局文件,大体有2种方式,如下所示: // 1. get a instance of LayoutInflater, then do whatever yo ...

  10. 代码合并工具——Beyond Compare

    由于公司现在人比较多,存在多个小组同时开发一个项目的情况.为避免不同小组之间代码的冲突,我们的SVN采用了打分支的情况. 这造成我们自己小组的内容上线后要合并到不同的分支和主干上去. 于是就找了这个合 ...