天天看点

菜鸟学习shiro之用配置文件实现登录,身份和权限验证2

Maven的和第一篇,一样直接去复制使用

这篇博客和上一篇没有多大的区别,区别之处就是上一篇没有实现权限认证,将在这一篇中实现,这里我们使用四郎给我们提供的内置类IniRealm,来实现登录,身份和权限验证,值得注意的是,IniRealm这个是引入的配置文件的形式来管理数据库中的数据的

直接上代码吧:

import antlr.StringUtils;
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;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

@RunWith(SpringRunner.class)
@SpringBootTest
public class IniRealmTest {


    @Test
    public void testAuthenticationTest() {

        // 这个是内置的realm类
        IniRealm iniRealm = new IniRealm("classpath:user.ini");


        // 1.构建SecurityManager环境
        DefaultSecurityManager defaultSecurityManager = new DefaultSecurityManager();
        defaultSecurityManager.setRealm(iniRealm);

        // 2.主体提交认证请求
        SecurityUtils.setSecurityManager(defaultSecurityManager);
        Subject subject = SecurityUtils.getSubject();

        // 这个是需要认证的信息
        UsernamePasswordToken token = new UsernamePasswordToken("Mark","123456");
        subject.login(token);

        System.out.println("isAuthenticated="+subject.isAuthenticated());

        //subject.logout();

        System.out.println("isAuthenticated="+subject.isAuthenticated());

        subject.checkRole("admin");
        subject.checkPermissions("user:delete","user:update");
    }

}
user.ini的配置文件如下
           
[users]
Mark=123456,admin
[roles]
admin=user:delete,user:update           

其实总体思路上还是:

1.构建安全管理器的环境,然后

2.就类比如一个服务器端,境界为数据库中的用户的信息,把域数据库的用户信息加载到安全管理器环境中去

3.统一把信息部署到主题实现容器或者封装对象的实现类(主题是安全管理器的实现类)中,

4.客户端把要验证的信息在主题容器中进行比对,这时所有的结果都在学科的方法中查看。