Shiro权限管理(二)——认证
时隔这么久终于有时间更新了,今天和大家分享一下Shiro的原理。我认为无论是Shiro也好,还是其他安全框架也好,其功能主要就分为三部分:认证、授权、加密。下面我们来详细说明Shiro具体是如何实现的。
Shiro结构图
讲原理当然离不开结构图,我们先来看一下Shiro的整体结构。
由Shiro的结构图我们可以看出Shiro的核心就是Security Manager。Shiro的认证、授权、Session管理,都需要由Security Manager负责。
Shiro认证
下面我们用一个小例子来了解一下Shiro 的简单用法。
public class HelloShiro { SimpleAccountRealm realm = new SimpleAccountRealm(); @Before public void addUser() { realm.addAccount("Mark", "123456"); } @Test public void testSimlpeRealm() { // 1.构建securityManager环境 DefaultSecurityManager securityManager = new DefaultSecurityManager(); securityManager.setRealm(realm); // 2.主体提交认证请求 SecurityUtils.setSecurityManager(securityManager); Subject subject = SecurityUtils.getSubject(); AuthenticationToken token = new UsernamePasswordToken("Mark", "123456"); // 3. 认证 subject.login(token); System.out.println(subject.isAuthenticated()); } }
- 创建securityManager环境,我们这里使用的是DefaultSecurityManager。
- 设置Realm,Realm主要主要负责Subject的认证和授权。其中最重要的两个方法是
doGetAuthenticationInfo
和doGetAuthorizationInfo
,这也是我们整个权限管理的最重要的一部分,由于这里我们只是一个入门程序,我们就使用Shiro定义好的SimpleAccountRealm
作为演示,后面我们还会说到JdbcRealm和自定义Realm。 - 通过
SecurityUtils
设置securityManager和获取subject; - 创建需要认证的token信息,这是我们自己创建一个
UsernamePasswordToken
来模拟获取用户从前台登陆的账号密码。 - 最后我们使用
subject.login(token);
进行认证。若tonken中的账号密码和我们addUser()
添加的相同则测试通过,否则则会抛出异常。
Shiro认证我们先说这么多,下节我们来说说Shiro的简单授权。如果大家有好的意见和建议请在评论区留言,谢谢大家。
相关推荐
likesyour 2020-08-01
ErixHao 2020-06-03
GDreams0 2020-06-01
nullcy 2020-04-25
visionzheng 2020-04-20
ganjing 2020-02-16
visionzheng 2020-04-14
杜鲁门 2020-11-05
luckyxl0 2020-08-16
Dullonjiang 2020-08-09
xclxcl 2020-08-03
zmzmmf 2020-08-03
MicroBoy 2020-08-02
ganjing 2020-08-02
zmzmmf 2020-07-09
MicroBoy 2020-07-05
zzhao 2020-06-26
子云 2020-06-18
visionzheng 2020-06-07