什么是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();