1.组成
1.Subject:应用代码直接交互的对象,代表当前用户
2.SecurityManager:用于管理所有的subjects(权限认证之类的)
3.Realm:用于和数据交互
2.ShiroConfig配置类
1.配置Realm,需要自定义类
2.配置DefaultWebsecurityManger,关联Realm(方法的参数中传入)
3.配置shiroFilterFactoryBean,配置拦截的请求及相关权限,需要配置DefaultWebsecurityMange,方法参数中传入
anno:开放权限,可以直接访问 authc:需要身份认证
logout:退出登录,后可定义退出后的页面(有些好的方法,或者自己重定向)
roles[admin]:可以有多个参数,表示某个或某些角色可以通过,多参数必须每个参数都通过才算通过
perms[admin]:可以有多个参数,表示拥有某个或某些权限才通过
3.自定义Realm
继承 AuthorizingRealm 类后,重写两个方法:
1.doGetAuthenticationInfo() 方法:用来验证当前登录的用户,获取认证信息(认证)。
info.addStringPermission(subject.getPerms());
2.doGetAuthorizationInfo() 方法:为当前登录成功的用户授予权限和分配角色(授权)。
UsernamePasswordToken token = (UsernamePasswordToken) authenticationToken;