NumOne:添加shiro的依赖
    NumTwo:首先就是写一个Shiro的Configuration,然后使用@Bean注解配置一个Realm,因为这个我们是要通过Realm去与数据库进行一个交互,这个Realm是一个接口,所以我们要手动的对这个Realm进行一个实现,直接自定义一个Realm继承一个_AuthorizingRealm重写两个方法,一个是AuthorizationInfo,一个是AuthenticationInfo,分别是一个用来授权信息的获取与封装,一个用来负责完成认证信息的获取和封装 这个授权的方法中有一个PrincipalCollection的一个参数,通过他的_principals.getPrimaryPrincipal();方法 我可以拿到登录用户的一个id, 然后通过用户的Id查找用户拥有的角色Id,然后通过角色Id查找对应的菜单Id,再通过菜单的Id查找其授权标识,然后把授权标识进行封装返回给AuthorizationInfo,
    在用户访问某个操作时就会执行上述的一个流程,然后通过代理的方式在具体操作的方法上添加注解,最终会判断,该用户是否有当前操作的一个权限,如果有就允许访问,如果没有便不允许访问。

    接下来是一个登录认证的一个操作,上边提到重写的有两个方法,还有一个是AuthenticationInfo的一个方法,
    这个方法就是用来进行一个用户登录的认证,此时会用到一个Token,获取用户提交的认证信息,此时我们就可以通过这个token拿到提交的用户名,然后通过这个用户名判断用户是否存在,或者是否是禁用的状态,如果被禁用或者用户不存在的情况下,就抛出异常拒绝登录, 如果用户存在就返回给AuthenticationInfo进行验证

    Shiro工作流程

    也就是说对于我们而言,最简单的一个Shiro应用:

    1、应用代码通过Subject来进行认证和授权,而Subject又委托给SecurityManager;

    2、我们需要给Shiro的SecurityManager注入Realm,从而让SecurityManager能得到合法的用户及其权限进行判断。
    商城项目了解一哈: