当前位置: 代码迷 >> 综合 >> Shiro 之 Subject 类
  详细解决方案

Shiro 之 Subject 类

热度:21   发布时间:2023-12-13 21:16:20.0

什么是Subject对象

通常我们会将Subject对象理解为一个用户,同样的它也有可能是一个三方程序,它是一个抽象的概念,可以理解为任何与系统交互的“东西”都是Subject。

二.如何得到一个对象

Subject subject = SecurityUtils.getSubject();  //得到一个对象Session session = subject.getSession();  //得到session 
session.setAttribute( "someKey", "aValue" ); 

三.这里的httpSession的全包名是javax.servlet.http.HttpSession,也就是说它可以正常操作httpSession

之前说了Subject可以理解为当前用户,那么我怎么知道你是当前用户呢,当然是需要登录。

//创建一个用户
UsernamePasswordToken token = new UsernamePasswordToken("root","123");
//是否记住用户
token.setRememberMe(true);
//登录
subject.login(token);

 //登录
        try {
            subject.login(token);
            //没有抛异常则登录成功
        } catch ( UnknownAccountException uae ) {
            System.out.println("用户名不存在");
        } catch ( IncorrectCredentialsException ice ) {
            System.out.println("密码错误");
        } catch ( LockedAccountException lae ) {
            System.out.println("用户被锁定,不能登录");
        } catch ( AuthenticationException ae ) {
            System.out.println("严重的错误");
        }

//判断用户是否是拥有某种角色
            boolean isRole = subject.hasRole( "admin" );
            //是否拥有某种功能
            boolean isPer = subject.isPermitted("xiaoming:run");

//退出登录
            subject.logout();

  相关解决方案