怎样理解认证与授权

背景

  认证与授权是web开发中绕不开的话题,任何开发的系统都需要对用户身份信息进行认证和授权,那什么是认证和授权呢?其中:认证:就是用户名、密码等进行验证,认证成功之后可以访问系统的信息,否则就拒绝访问;授权:就是对此时的用户权限判断,即根据不同的权限可以访问不同的信息,比如对于一个系统开发者比普通的用户有着更高的权限,开发者可以查询所有的用户信息,而普通的用户只能管理自己的信息。

认证

  对于一个系统,我们第一次访问的时候会进行登录,输入登录信息之后,后端对信息进行判断,如果对比成功之后你就可以访问网站的信息,每次访问都需要进行验证,如果都是携带用户名和密码就会很容易被截取,导致密码泄露。所以在第一次登陆成功之后,后端会为每个用户生成一个令牌(token),之后每次访问的时候就携带token就可以啦,不用携带用户名和密码,但可能有人问,token也会被截取呢?虽然也会被截取,但我们生成的token是具有时效性的,如果过了一段时间后,该token就会失效,会重新刷新token。而token的生成主要有两种方式,第一种是使用redis,生成一个随机的字符串作为key,用户信息作为valuekey作为token在前后端传递。第二种是jwt,这种就是用户的信息就直接保存在jwt这个加密字符串中,这个就很依赖加密算法。

Spring Security实现认证

  在spring框架中,spring security主要的功能就是解决认证和授权,当我们进行登录的时候,输入用户名和密码的时候会进入spring security提供的过滤器:UsernamePasswordAuthenticationFilter,接着该过滤器会将用户名和密码封装成:UsernamePasswordAuthenticationToken,之后进入AuthenticationManager接口进行处理,而这个接口的实现类:ProviderManager则主要用于身份的认证,在该类中提供了authenticate方法,该方法实现了具体的认证。

授权

  对于授权,一般采用了用户-角色-权限的方式,这时在数据库存在五张表,首先是用户表、角色表、权限表、用户-角色关联表、角色-权限关联表,其流程为:首先根据登录的用户名,查询用户信息,接着设置该用户所具有的角色,得到角色就可以得到权限,这样用户和权限就对应起来了。那这里的权限具体的体现在哪里呢?前端通过URL访问后端的数据,所以这里我们会把URL和角色对应起来,即该URL需要什么样的角色才能访问,之前的用户和角色对应起来了,最后不同的用户和访问到不一样的资源啦。

Spring Security实现授权

  在授权中,FilterInvocationSecurityMetadataSource起着很重要的作用,它主要是根据用户传来的请求地址,分析出请求需要的角色。得到每个请求地址需要的角色后,进入AccessDecisionManager决策器,使用它来判断用户是否可以访问URL的资源。

公众号:CodeJames

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值