JavaWeb-权限管理思路分析

1.使用Filter完成一个简单的权限模型:

1)需求:

①.管理权限

    > 查看某人的权限

    > 修改某人的权限

②.对访问进行权限控制:有权限则可以访问,否则提示:没有对应的权限,请返回

2)实现:

②.对访问进行权限控制:

  > 使用Filter进行权限的过滤:检验用户是否有权限,若有,则直接响应目标页面;若没有重定向到403.jsp

* 403.jsp

  <h4>

    没有对应的权限

    请<a href="">返回</a>

  </h4>

* 使用Filter如何进行过滤:

  - 获取servletPath,类似于/app/article1.jsp

  - 在用户已经登录(可使用 用户是否登录的过滤器)的情况下,获取用户信息,session.getAttribute("user")

  - 在获取用户所具有的权限的信息:List<Authority>

  - 检验用户是否有请求 servletPath的权限:可以思考除了遍历以外,有没有更好的实现方式

  - 若有权限则:响应

  - 若没有权限:重定向到403.jsp

* others:

  - 用户若登录,需要把用户信息(User 对象)放入到HttpSession

  - 再检验权限之前,需要判断用户是否已经登录

①.管理权限:

  > 封装权限信息:Authority

  Authority{

    //显示到页面上的权限的名字

    private String displayName;

    //权限对应的URL地址:

    private String url;一个权限对应着一个url,例如Article_1 -> /app_4/article1.jsp

  }

  > 封装用户信息:User

  User{
    private String username;

    private List<Autority> authorities;

    //...

   }

  > 创建一个UserDao:

  User get(String username);

  void update(String username,List<Autority>);

  > 页面

  authority-manager.jsp:

    * 有一个text文本框,仅输入username,提交后,使用checkbox显示当前用户所有的权限的信息。

    * 检查request中是否有user信息,若有,则显示

      xxx的权限为:对应的权限的checkbox打上对号,提示,页面上需要通过两层循环的方式来筛选出被选择的权限

  > Servlet

  authority-manager.jsp 提交表单后:获取表单的请求参数:username,在根据username获取User信息,把user放入到request中,转发到authority-manager.jsp。

   authority-manager.jsp 修改权限的表单提交后:获取请求参数:username,authory(多选);调用UserDao的update()方法实现权限的修改;重定向到authority-manager.jsp

原文地址:https://www.cnblogs.com/yangHS/p/11208494.html