本站业务范围:1、PC端软件开发、网站开发 2、移动端APP、网站、微信接口、微商城开发 3、视频教程、毕业设计辅导
 当前位置:文章中心 >> MVC
立即购买视频教程 MVC中怎么实现对于网站的权限管理
夜鹰教程网 来源:www.yyjcw.com 日期:2016/10/28 16:49:57
分享到:
网站的权限管理是一个很重要的功能,MVC中怎么实现对于网站的权限管理呢。

这篇文章不能解决你的问题?我们还有相关视频教程哦!

QQ:1416759661 新手QQ群:7835003  加Q远程协助!

在线解答|Demo制作|远程调试| 点击查看相关的视频教程

技术咨询: 购买教程  技术咨询:购买教程  大胆的加QQ咨询。

  在MVC中有一个名为AuthorizeAttribute的类,我们可以创建我们自己的特性MemberValidationAttribute类,然后继承AuthorizeAttribute类来实现我们自己的网站权限的管理。然后通过将MemberValidation特性添加到具体的Action上,将我们的权限管理精确到某个页面上。

  下面我通过一个例子了解一下。

      首先我们创建一个空的MVC项目。创建两个Controller和三个页面。

  主页Controller

  
复制代码

public class HomeController : Controller
    {
        //
        // GET: /Home/

        public ActionResult Index()
        {
            return View();
        }

    }

复制代码

       页面

  

  用户登录Controller,在Login Action下添加 Cookie写入代码。

  
复制代码

public class MemberController : Controller
    {
        //
        // GET: /Member/
        public ActionResult Index()
        {
            return View();
        }
        public ActionResult Login()
        {
            var cookie = new HttpCookie("Login", "Success");
            System.Web.HttpContext.Current.Response.SetCookie(cookie);             
            return View("LoginSuccess");
        }
    }

复制代码

 

    页面

    

    

    以上三个截图的关系是,我们希望用户先是通过登录页面登录,提示成功后,在进入Home页面。但是这时我们通过在地址栏内输入"/Home"也可以登录到主页面,那也许就会报错。在我做的上个项目中,就是需要对用户的批量下单做一个验证,如果有没通过验证的订单是不让用户通过在地址栏输入地址跳转到订单结算页面的,不然是会报错的。这里就需要我们将针对某一页面的验证添加到相应的Action上去。

    下面我们添加一个名为MemberValidationAttribute类,让他继承AuthorizeAttribute类,这里我们只需要实现他的OnAuthorization方法

    
复制代码

public class MemberValidationAttribute:AuthorizeAttribute
    {
        public override void OnAuthorization(AuthorizationContext filterContext)
        {
            //获取Cookies中的Login
            var memberValidation = System.Web.HttpContext.Current.Request.Cookies.Get("Login");
            //如果memberValidation为null  或者 memberValidation不等于Success
            if (memberValidation==null||memberValidation.Value != "Success")
            {
                //页面跳转到 登录页面
                filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary(new {controller="Member",action="Index" }));
                return;
            }
            //通过验证
            return;
        }
    }

复制代码

    然后将特性添加到HomeController下的Index Action上。

   
复制代码

public class HomeController : Controller
    {
        [MemberValidation]
        public ActionResult Index()
        {
            return View();
        }
    }

复制代码

          这下再怎么通过Url去跳转的话也不能再不通过登录的情况下进入我们的Home Index 页面了。

     有两个遗留问题要在这里说一下:

    第一:登录成功的页面并没有添加一个跳转到Home Index的 按钮,所以登录成功后还是要通过Url 到Home Index去。

    第二:用户登录的时候将Cookie Login 清空。

 

    2013-5-22 遗留问题一

    在AuthorizeAttribute中还有一个方法叫AuthorizeCore,他返回一个bool值表示是否通过验证。通过验证的话跳转到下一页面A,如果未通过验证,则跳转到登录页面。    
复制代码

protected override bool AuthorizeCore(HttpContextBase httpContext)
        {

            var cook = System.Web.HttpContext.Current.Request.Cookies.Get("CustomerInfo");

            if (cook != null)
            {
                if (cook.ToString() != "")
                {
                    return true;
                }

            }
            return false;
        }

复制代码

 

登录页面的设置在web.config中。如下:    

<system.web>
    <authentication mode="Forms">
      <forms loginUrl="~/Account/LoginPage" timeout="2880" />
    </authentication>
  </system.web>

    loginUrl就是要跳转到的登录页面,这是在url地址栏会携带A的地址,作为登录成功后的跳转。           
复制代码

    public ActionResult LoginPage(string ReturnUrl)
        {
            if (ReturnUrl != null)
                ViewBag.ReturnUrl = ReturnUrl;            
            return View();
        }

复制代码

     

 

复制链接 网友评论 收藏本文 关闭此页
上一条:已经是第一条了  下一条: 自定义AuthorizeAttribute
购买夜鹰教程网视频教程
  推荐教程/优惠活动

  热门服务/教程目录

  夜鹰教程网  新手必看,详细又全面。
  夜鹰教程网  购买教程  夜鹰教程网  在线支付-方便
  夜鹰教程网  担保交易-快捷安全   夜鹰教程网  闪电发货
  夜鹰教程网  电话和QQ随时可以联系我们。
  夜鹰教程网 不会的功能都可以找我们,按工作量收费。

客服电话:153 9760 0032

购买教程QQ:1416759661  购买教程
  热点推荐
PHP---构造函数
php查询mysql中文乱码的解决办法
PHP打印函数集合
PHP中如何保持SESSION以及由此引发…
PHP判断远程文件是否存在
PHPWind7.5 SP2版本新功能抢先看
PHP通过SQL语句将数据写入MySQL数…
php中计算时间差的方法
在PHP中截取HTML代码串问题
PHP教程:strtotime函数实现时间戳…
优化php的性能效率
用php 发送html格式文本
PHP正则表达式提取超链接和标题
iconv函数使用方法---php
配置PHP站点
  尊贵服务
夜鹰教程网 承接业务:软件开发 网站开发 网页设计 .Net+C#+VS2008+MSsql+Jquery+ExtJs全套高清完整版视频教程
  最近更新
MVC中怎么实现对于网站的权限管理…
自定义AuthorizeAttribute
“缺少 mysqli 扩展“的解决办法 …
如何用php连接mysql实例详解
PHPWind7.5 SP2版本新功能抢先看
PHP中如何保持SESSION以及由此引发…
php 使用GD库为页面增加水印
用php 发送html格式文本
优化php的性能效率
解决PHP乱码问题的三种办法
配置PHP站点
PHP打印函数集合
iconv函数使用方法---php
PHP---构造函数
PHP之TEA算法实现
  工具下载  需要远程协助? 购买教程

sql2008视频教程 c#视频教程

VIP服务:如果您的某个功能不会做,可以加我们QQ,给你做DEMO!

JQUERY  Asp.net教程

MVC视频教程  vs2012
.NET+sql开发
手机:15397600032 C#视频教程下载
vs2012 vs2008 vs2010 sql2008 sql2005
Asp.Net  

教程咨询QQ:1416759661


这篇文章不能解决你的问题?我们还有相关视频教程哦!

QQ:1416759661 新手QQ群:7835003  加Q远程协助!

在线解答|Demo制作|远程调试| 点击查看相关的视频教程

技术咨询: 购买教程  技术咨询:购买教程  大胆的加QQ咨询。

关于我们 | 广告投放 | 购买教程 | 网站建设 | 技术辅导 | 常见问题 | 联系我们 | 友情链接 | 购买教程

Nighthawk Tutorials Network 快捷购买教程

夜鹰教程网 版权所有 www.yyjcw.com All rights reserved 备案号:蜀ICP备08011740号3

 

出售asp.net系列视频教程 高清原创版 每天晚上20:30--23:00在线 按照编号从简单到高级 http://www.yyjcw.com/list.html