使用过滤器对权限进行过滤,就是对访问的url地址进行判断

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package cn.toher.filter;

import cn.toher.bean.Group;
import cn.toher.bean.User;
import cn.toher.dao.AuthorityDao;
import cn.toher.dao.GroupDao;
import cn.toher.dao.UserDao;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import static jdk.nashorn.internal.runtime.regexp.joni.constants.AsmConstants.S;

/**
 *
 * @author Administrator
 */
public class AuthorityFilter implements Filter {

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
    }

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        HttpServletRequest servletRequest = (HttpServletRequest) request;
        HttpServletResponse servletResponse = (HttpServletResponse) response;

        User user = (User) servletRequest.getSession().getAttribute("Suser");
            //获取请求的Servlet,即url
            if(user.getIsAdmin() != 1){
                String currentURL = servletRequest.getServletPath();
                System.out.println("currentURL:"+currentURL);
                AuthorityDao authorityDao = new AuthorityDao();
                //通过url找到权限编号
                String authorityNo = authorityDao.findAuthorityNo(currentURL);
                List<String> listuser = new ArrayList<String>();//存放个人权限编号集合
                //通过获取Session得到user
                UserDao userDao = new UserDao();
                //调用方法,把User的authorityNo拼接成String集合
                listuser = userDao.splitString(user);
                //判断权限集合是否包含这个权限
//               List 中 contains()函数的用法?
                if (listuser.contains(authorityNo)) {
                    chain.doFilter(request, response);
                } else {
                    response.getWriter().write("<script type=\"text/javascript\">alert(\"权限不足\")</script>");
                }
            }else{
                chain.doFilter(request, response);
            }
    }

    @Override
    public void destroy() {
    }
}
时间: 2024-08-05 11:09:06

使用过滤器对权限进行过滤,就是对访问的url地址进行判断的相关文章

布隆过滤器 - 如何在100个亿URL中快速判断某URL是否存在?

题目描述 一个网站有 100 亿 url 存在一个黑名单中,每条 url 平均 64 字节.这个黑名单要怎么存?若此时随便输入一个 url,你如何快速判断该 url 是否在这个黑名单中? 题目解析 这是一道经常在面试中出现的算法题.凭借着题目极其容易描述,电面的时候也出现过. 不考虑细节的话,此题就是一个简单的查找问题.对于查找问题而言,使用散列表来处理往往是一种效率比较高的方案. 但是,如果你在面试中回答使用散列表,接下来面试官肯定会问你:然后呢?如果你不能回答个所以然,面试官就会面无表情的通

UAC相关问题分析--使用管理员权限打开VisualStudio,无法访问网络磁盘,无法拖拽文件

搬运自http://wurang.me/2014/06/17/uac-problems.html [问题产生] 问题最初是在administrator权限下,visual studio 打开网络磁盘下的文件报错.经过几次调试,最终发现是问题是在管理员权限下,vs无法访问网络磁盘. Console.Write( System.IO.File.Exists(path)); 该结果返回False.为了确认是由于权限问题引起,使用非管理员权限打开vs,运行上面的程序,结果返回True. 至此问题确立:w

解决“无法连接到WMI提供程序,您没有权限或者该服务器无法访问。“

最近在学习PowerDesigner,在创建PDM模型的时候,遇到了一点儿小问题,本以为要重装SQLServer,百度了一下,问题就轻松解决了.问题的背景是这样的,在创建数据源的时候,总是测试连接不成功,我就想打开配置管理器查看一下是不是出了什么问题.结果,就出现了下面的弹窗:↓↓↓ 出错提示: 启动SQL Server 2005 配置管理器时,出现以下提示错误 无法连接到WMI提供程序.您没有权限或者该服务器无法访问...... Invalid class [0x80041010] 出错原因:

ASP.NET MVC+EF框架+EasyUI实现权限管理系列(2)-数据库访问层的设计Demo

原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(2)-数据库访问层的设计Demo ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇) (1)框架搭建 前言:这篇博客我们继续来实现我的权限系列,这个博客一段时间也没有写了,重点是我在想还写不写,最终我决定还是写下去,因为我们是为了学习,当别人提出意见的时候,我们可以参考和采纳,但是我们不一定非要采纳,上几篇博客大家都说用CodeFirst来实现,是啊,现在基本很少有人用我的这种方法来实现了,都是用CodeF

sharepoint:拥有完全控制权限的用户依然“拒绝访问”

//来源 http://www.cnblogs.com/jindahao/archive/2012/04/25/2468714.html 遇到问题: 拥有完全控制权限的用户依然拒绝访问. 可能的原因: 1.母版页未发布 2.css文件为发布 3.自定义webpart或者其他自定义控件访问其他网站权限问题 4.自定义代码访问sharepoint组问题

TCP 错误代码 10013: 试图以其访问权限所禁止的方式访问套接字

大家遇到的问题可能是登录没反应,这时,大家要充分利用调试工具,调试工具可能会提示下面错误: 未能连接到 net.tcp://swk-pc:4502/chatservice.svc.连接尝试的持续时间为 00:00:00.3880222.TCP 错误代码 10013: 试图以其访问权限所禁止的方式访问套接字.原因可能是,试图以跨域的方式访问某服务,而该服务的配置不支持跨域访问.您可能需要与服务的所有者联系,以公开通过 HTTP 的套接字跨域策略,并在允许的套接字端口范围 4502-4534 之内承

获取网络访问权限套餐提供国外网络访问配置服务外网访问服务

获取网络访问权限套餐提供国外网络访问配置服务外网访问服务 可以访问youtube等国外网站 获取网络访问权限套餐 预览:http://www.tudou.com/v/56Qa6nyxTg4/&amp;rpid=24434369&amp;resourceId=24434369_04_05_99/v.swf 提供YouTube.Google+.Facebook.Twitter.App Store.维基百科等最全网站访问权限,终身享受远程设置套餐服务. 预览视频 http://www.tudou

nginx 日志过滤网络爬虫访问日志

nginx里面有很多的爬虫日志,会影响到后期的数据分析,所以一般会去掉. nginx排除配置: location / {                           #去掉爬虫 Start                           if ($http_user_agent ~* "bot|spider") {                                  access_log off;                            }   

sql server2008R2 无法连接到WMI提供程序。你没有权限或者该服务器无法访问

在自己的Win8.1的系统在安装了Vs2013和Sqlserver2008R2 今天在打开ssms的时候发现连接不上数据库,且出现了以下问题 然后打开Sqlserver配置管理器准备看看sqlserver的服务是否开启,结果就看到了以下错误 以前从来没有遇到过sqlserver配置管理器打不开的问题于是在网络上找了几个解决方案然后按照其他人的的解决方案,作了以下操作,还是没有解决我的问题: C:/Program Files/Microsoft SQL Server/90/Shared添加netw