html引入shiro

html-css09

html引入shiro,第1张

html是静态页面,只有html的那些原生标签,怎么能调shiro标签呢?

肯定是类似jsp这种才可以啊

请参考下开涛的那个,jsp头部必须引入shiro的标签才可以

jsp也是通过tld和tagsupport类解析成html的

<%@taglib prefix="shiro" uri="http://shiro.apache.org/tags" %>

shiro的核心 自定义realm 网上有很多教程都非常详细的讲解了realm 在这里也是非常简化的自定义

@Resource private UserService userService /** * 为当限前登录的用户授予角色和权 */ @Override protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) { String userName=(String)principals.getPrimaryPrincipal() SimpleAuthorizationInfo authorizationInfo=new SimpleAuthorizationInfo() authorizationInfo.setRoles(userService.getRoles(userName)) authorizationInfo.setStringPermissions(userService.getPermissions(userName)) return authorizationInfo } /** * 验证当前登录的用户 */ @Override protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException { String userName=(String)token.getPrincipal() UserInfo user=userService.getByUserName(userName) if(user!=null){ AuthenticationInfo authcInfo=new SimpleAuthenticationInfo(user.getUsername(),user.getPassword(),"xx") return authcInfo }else{ return null } }

①login.html 发送AJAX异步请求到服务器,携带 username + password

②进入服务器,首先经过spring的编码过滤器,处理编码.

web.xml

③ 在服务器启动时,便创建了securityManager, 类似于dispatcherServlet 对进行登录的操作进行统一的管理.

​ Username + Password 生成Token,用于验证的准备

④ 创建自己的Realm,同时数据源交给spring容器管理

shiro.ini

告知shiro,配置数据源realm

⑤ 安全管理器从spring中取出数据源,进行验证.(先验证username ,再验证密码,验证成功则将用户存入缓存(session),以备验证使用)

后续页面发送请求携带sessionId,验证是否存在此用户.(下为源码)

⑥验证完成后,经过一系列的过滤器

​ 这些过滤器配置在shiro.xml中.

在web.xml中配置shiro的过滤器代理DelegatingFilterProxy.在服务器启动时,到spring中寻找到这些过滤器的对象,形成调用链.

shiro的过滤器一般优先于服务器的过滤器执行.

⑦自建过滤器,返回AJAX信息

⑧经过一系列过滤器,页面接收返回信息

至此,shiro登录认证完成,用户信息存在于session中(此session被shiro封装).

在同一个会话中,页面的多次请求将通过携带SessionId,找到服务器的用户信息验证是否已登录.

下为源码

Shiro 的注销功能 也是获取session,清空session.