软件下载 | 资讯教程 | 最近更新 | 下载排行 | 一键转帖 | 发布投稿
您的位置:最火下载站 > 网络编程 > ASP.NET > Asp.net mvc 1.0 对页面访问权限的控制

Asp.net mvc 1.0 对页面访问权限的控制

  前两天才接触asp.net mvc框架,感谢博客园中那么多优秀的教程.

  这段时间上的课程,老师让做个项目,想着就用asp.net mvc框架吧..逼着自己多学点东西.于是就硬着头皮上了!其中有这样一个问题,我的views文件下的sysmanage文件下的页面都只实现单一的功能..也就想当于一个权限,用户登录了,取到用户的信息!得到用户的权限,对比是否具有访问该页面的权限!

  首先我想到的就是用拦截器!可是不知道怎么取到action方法名.因为action方法名就对应着访问页面的名字,这样和数据库一对比,就可以判断该用户是否具有访问该页面的权限!自己敲了下代码..看了下一些属性方法,算是找到怎么获得action方法名了.

  例:

以下为引用的内容:
public class VisitFilter : FilterAttribute,IActionFilter
{
/// <summary>
/// 在action调用前执行拦截
/// </summary>
/// <param name="myFilterContext"></param>
void IActionFilter.OnActionExecuting(ActionExecutingContext myFilterContext)
{
//假设取到用户的权限
string UserPower = "UserPower";
if(UserPower!=myFilterContext.ActionDescriptor.ActionName )
{
throw new InvalidOperationException(@"无权访问");
}
}
void IActionFilter.OnActionExecuted(ActionExecutedContext myFilterContext)
{
}
}

  但是接下来的问题是,如果没有权限我改怎么转到其自定义的页面呢?能不能在action中转到其他的action呢?...?
带着这个疑问我又不断的打点看方法,看属性,也没找到怎么做.不过想一想又像是不可以的.(如果哪位朋友知道方法,请 分享给我,我真诚的感谢您).

  可能看到我上面代码抛出了一个异常吧..不错,就是用他,因为我们还可以写一个异常拦截器.这样就可以捕获我们自己抛出的异常,然自己自己定义错误信息..在异常发生时就会自己动跳到Views/Shared/Error.aspx了.我们在页面中显示我们自己的错误消息来提示用户..这个就可以达到效果了..呵呵. 异常拦截器的代码如下:

以下为引用的内容:
public class ExceptionFilter : FilterAttribute,IExceptionFilter
{
/// <summary>
/// action发生异常时拦截
/// </summary>
/// <param name="myFilterContext"></param>
void IExceptionFilter.OnException(ExceptionContext myFilterContext)
{
myFilterContext.Controller.ViewData["ErrorMsg"] = myFilterContext.Exception.Message;
myFilterContext.Result = new ViewResult()
{
ViewName = "Error",
ViewData = myFilterContext.Controller.ViewData,
};
myFilterContext.ExceptionHandled = true;
}
}

  这里我就直接在asp.net mvc 框架自带的页面上修改的,对About做了验证... 源码下载

  作者博客:http://www.cnblogs.com/NetChessman/

    相关阅读
    网友评论
    栏目导航
    推荐软件