index.jsp提交到控制器,
控制器接收后形成一个入场券UsernamePasswordToken;
同时用Subject subject = SecurityUtils.getSubject(); 把用户抽象化,就是把用户抽象成一个要入场的“物件”;
再用这个“物件”带上“入场券”去登录:subject.login(token);
此时就转到自己写得MyRealm类中去认证和授权了。
首先执行的是protected AuthenticationInfo doGetAuthenticationInfo()函数,
用String username = token.getPrincipal().toString() ;获得你从subjct.login(token)中发过来的账号和密码,
用User user = userdao.findUserByUserName(username) ;去查找数据库中的账号和密码;
AuthenticationInfo authenticationInfo =
new SimpleAuthenticationInfo(user.getUsername(),user.getPassword(),"a") ;
System.out.println("成功了吗?");
return authenticationInfo ;
如果比对成功,就返回authenticationInfo这个新的入场券。比对的过程是在框架中自动进行的。
/**
* shiro什么时候会进入doGetAuthorizationInfo进行授权呢?
* 1、subject.hasRole(“admin”) 或 subject.isPermitted(“admin”):自己去调用这个是否有什么角色或者是否有什么权限的时候;
* 2、@RequiresRoles("admin") :在方法上加注解的时候;
* 3、[@shiro.hasPermission name = "admin"][/@shiro.hasPermission]:在页面上加shiro标签的时候,
* 即进这个页面的时候扫描到有这个标签的时候。
*/