自己写一个访问的权限 如果用户已经登陆 但是权限不够就 跳转到一个页面提示没有权限访问 但是 我写好之后只能跳转到登陆页面
再有就是按照如下的代码 能跳转大页面 但是 即使是有权限的用户也跳转到这个页面 也就是说 无论什么情况都跳到这个页面 有权限的用户也不能继续的访问
求解决 在线等
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Security;
using MvcCompany.Models;
namespace AuthTest.Models
{
public class MyAuthAttribute : AuthorizeAttribute
{
// 只需重载此方法,模拟自定义的角色授权机制
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
string currentRole = GetRole(httpContext.User.Identity.Name);
if (Roles.Contains(currentRole))
return true;
return base.AuthorizeCore(httpContext);
}
public override void OnAuthorization(AuthorizationContext filterContext)
{
base.OnAuthorization(filterContext);
if (filterContext.HttpContext != null)
{
RedirectResult redirect = new RedirectResult("/Account/MyAuth");
filterContext.Result = redirect;
return;
}
}
//返回用户对应的角色, 在实际中, 可以从SQL数据库中读取用户的角色信息
private string GetRole(string UserName)
{
switch (UserName)
{
case "aaaaaa": return "Admin";
default: return "Fool";
}
}
}
}
不要重写 OnAuthorization。
应该重写 AuthorizeCore 和 HandleUnauthorizedRequest,参考如下:
public class MyAuthAttribute : AuthorizeAttribute
{
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
string currentRole = GetRole(httpContext.User.Identity.Name);
if (Roles.Contains(currentRole)) return true;
return base.AuthorizeCore(httpContext);
}
protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
{
filterContext.Result = new RedirectResult("/Account/MyAuth"); ;
}
private string GetRole(string UserName)
{
switch (UserName)
{
case "aaaaaa": return "Admin";
default: return "Fool";
}
}
}
你单步断点调试啊。
你数据库是自己的?然后角色验证那一套东西是微软的?