使用使用maven项目实现Java安全框架Shiro的内置Realm:IniRealm进行登陆权限验证

1.我们先建一个maven项目,如图:

2.在pom.xml中添加如下依赖:

<dependencies>
    <dependency>
        <groupId>org.apache.shiro</groupId>
        <artifactId>shiro-core</artifactId>
        <version>1.4.0</version>
    </dependency>

    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>RELEASE</version>
    </dependency>
</dependencies>

3.创建一个user.ini文件,该文件保存用户基本信息和权限信息,user.ini的基本信息如下:

[users]
\#提供了对用户/密码及其角色的配置,用户名=密码,角色1,角色2
root=123456,admin
[roles]
\#提供了角色及权限之间关系的配置,角色=权限1,权限2
admin=user:delete

4.现在正式开始编码,包括检查登陆认证、含有权限,代码如下:

package com.wkf;

import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.UsernamePasswordToken;
import org.apache.shiro.mgt.DefaultSecurityManager;
import org.apache.shiro.realm.text.IniRealm;
import org.apache.shiro.subject.Subject;
import org.junit.Test;

/**
 * 使用内置IniRealm类读取用户
 * @author wkf
 */
public class IniRealmTest {

    @Test
    public void testAuthentication(){

        IniRealm iniRealm = new IniRealm("classpath:user.ini");//读取用户信息文件,IniRealm类:用户信息存储类

        //1.构建SecurityManager环境
        DefaultSecurityManager defaultSecurityManager = new DefaultSecurityManager();
        defaultSecurityManager.setRealm(iniRealm);
        //2.主体提交认证请求
        SecurityUtils.setSecurityManager(defaultSecurityManager);
        Subject subject = SecurityUtils.getSubject();

        UsernamePasswordToken token = new UsernamePasswordToken("root","123456");
        subject.login(token);//登陆认证

        System.out.println("认证结果:"+subject.isAuthenticated());

        subject.checkRole("admin");//检查角色授权(必须登陆认证后才行)

        subject.checkPermission("user:delete");//检查角色权限

    }
}

猜你喜欢

转载自blog.csdn.net/qq_37284798/article/details/85227381