权限管理(session-cookie版)

258 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第18天,点击查看活动详情

权限管理里概念:软件应用系统安全主要包括认证(登录)和授权(权限管理)两部分

一.设计思路

用户在登录页面输入用户名和密码进行登录操作,后端应用程序在收到页面传来的用户名和密码后,就去数据库中进行数据比对,来完成认证工作。

登录成功后,还需要查询该用户的角色,再通过角色关联相应的权限,根据权限来判断该用户是否能进行某项操作

二.Web项目

Session:将用户及对应的角色、权限等信息放到Session会话中保存 拦截器或过滤器:判断该会话中是否保存用户的已登录信息

Spring Security和Shiro是两个优秀的Java安全框架:

Spring Security:Spring 家族的一员,是一个能够为基于 Spring 的企业应用系统提供声明式的安全访问控制解决方案。它利用了Spring IOC和AOP功能,为应用系统提供声明式访问控制功能,减少了为企业安全控制编写大量重复代码的工作;

Shiro是由 Apache 软件基金会出品的Java安全管理框架,具有简单、功能强大的特点,在Java安全领域中应用广泛。

三.身份认证

由于Http是无状态协议,所以我们需要有支持客户端与服务器之间的有状态交互而设计的技术,这时候Cookie和Session就出现了。如图认证过程:

image.png

这个是最常见的认证方式,以下是文字说明:

  • (1) 用户浏览器向服务器发起认证请求,将用户名和密码发送给服务器
  • (2) 服务器认证用户名和密码,若通过则创建一个 Session 对象,并将用户信息保存到 Session 中。Session的信息可以是保存到服务器文件、共享外部存储、数据库等存储中,等下次请求时查询验证使用;
  • (3) 同时,服务器会将该 Session 的唯一标识sessionID,返回给用户浏览器,并保存在cookie中;
  • (4) 用户请求其他页面时,浏览器会自动将用户的 cookie 携带上,并发起接口请求,服务端收到请求后,从cookie解析出sessionID, 根据这个sessionID 查询登录后并保存好的session,若有则说明用户已登录,然后放行。