排名
6
文章
6
粉丝
16
评论
8
{{item.articleTitle}}
{{item.blogName}} : {{item.content}}
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:
50010702506256
50010702506256
欢迎加群交流技术
分类:
权限
[库存知识点]
在很多网站或者我们自己项目的运用中可能有些页面或者功能不能共享他人,这时候我就给予权限
本期--页面访问权限--做一个用户登录权限
OK 废话不多说直接上代码:>>
准备好控制器以及相应的视图(页面)

在根目录创建文件夹Filters并且在文件夹里新建一个类(可视作过滤器)IsAuthorizationFilter继承AuthorizeAttribute 分别重写AuthotizeAttribute()方法和
HandleUnauthorizedRequest()两个方法
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace MvcApplication1.Filters
{
public class IsAuthorizationFilter:AuthorizeAttribute
{
/// <summary>
/// 授权返回bool状态
/// </summary>
/// <param name="httpContext"></param>
/// <returns></returns>
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
if (httpContext.Session["userinfo"] == null)
{
return false;
}
else
return true;
}
/// <summary>
/// 如果授权不通过
/// </summary>
/// <param name="filterContext"></param>
protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
{
//如果授权不通过直接跳转到错误页面
filterContext.Result = new RedirectResult("~/Error/NotLoginErrorPage.love");
}
}
}
--
----在App_Start文件夹下FilterConfig.cs
--
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
//添加这句,表示运用到全局
filters.Add(new IsAuthorizationFilter());
}但是在授权不通过时如果不忽略某个页面会一直循环重定向路径,解决方法
在指定的错误页面的控制器设置忽略权限通过 只需在该控制器或者当前类前加上 [AllowAnonymous]即可
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace MvcApplication1.Controllers
{
[AllowAnonymous]
public class ErrorController : Controller
{
//
// GET: /Error/
public ActionResult ErrorPage()
{
return View();
}
public ActionResult NotLoginErrorPage()
{
return View();
}
}
}运行结果:>>

好了 本期 小编就简单的说到这里
评价