Shiro安全框架第四篇| Shiro自定义Realm进行认证授权

SHiro自定义Realm

首先在resource下新建user.ini

1[users]
2jiuyue=12345,admin
3[roles]
4admin=user:delete,user:update

然后测试类下新建IniRealmTest测试类,跟前面不一样的是需要

1  IniRealm iniRealm =new IniRealm("classpath:user.ini");

new IniRealm对象将自定义的user.ini配置到IniRealm作为参数进行实例化。

 1/**
 2 * Create bySeptember
 3 * 2018/10/25
 4 * 19:51
 5 */
 6public class IniRealmTest {
 7    @Test
 8    public void testAuthentication(){
 9        IniRealm iniRealm =new IniRealm("classpath:user.ini");
10
11        //1.构建SecurityManager环境
12        DefaultSecurityManager defaultSecurityManager= new DefaultSecurityManager();
13        defaultSecurityManager.setRealm(iniRealm);
14        SecurityUtils.setSecurityManager(defaultSecurityManager);
15        Subject subject = SecurityUtils.getSubject();
16        //2.主体提交授权认证
17        UsernamePasswordToken token = new UsernamePasswordToken("jiuyue","12345");
18        subject.login(token);
19        System.out.println("isAuthenticate:"+subject.isAuthenticated());
20        System.out.println("user:");
21        subject.checkRoles("admin");
22        subject.checkPermission("user:delete");
23        subject.checkPermissions("user:delete","user:update");
24
25    }
26}

代码分析:
首先通过new DefaultSecurityManager()构建SecurityManager环境,将IniRealm设置到环境中

1( defaultSecurityManager.setRealm(iniRealm))

接着获取 SecurityManager 并绑定到 SecurityUtils。

通过 SecurityUtils 得到 Subject,其会自动绑定到当前线程;如果在 web 环境在请求结束时需要解除绑定。然后获取身份验证的 Token,如用户名,密码。

调用 subject.login 方法进行登录,其会自动委托给 SecurityManager.login 方法进行登录。

专题链接:

Shiro安全框架第一篇| 什么是Apache Shiro?

Shiro安全框架第二篇| Shiro的整体架构

Shiro安全框架第三篇| Shiro的认证,授权

                “扫码关注“

猜你喜欢

转载自blog.csdn.net/qq_37745470/article/details/84849485