前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >06 Spring Boot 整合Shrio

06 Spring Boot 整合Shrio

作者头像
shimeath
发布2020-07-31 15:49:40
3140
发布2020-07-31 15:49:40
举报

整合Shrio

整合方法

  1. 导入依赖 <!-- https://mvnrepository.com/artifact/org.apache.shiro/shiro-core --> <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-spring</artifactId> <version>1.5.3</version> </dependency>
  2. 创建UserRealm类,继承AuthorizingRealm public class UserRealm extends AuthorizingRealm { //授权 @Override protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) { return null; } //认证 @Override protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authenticationToken) throws AuthenticationException { return null; } }
  3. 创建ShiroConfig类配置shrio @Component public class ShiroConfig { //第三步:创建ShiroFilterFactoryBean @Bean public ShiroFilterFactoryBean shiroFilterFactoryBean(@Qualifier("getDefaultWebSecurityManager") DefaultWebSecurityManager defaultWebSecurityManager){ ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean(); shiroFilterFactoryBean.setSecurityManager(defaultWebSecurityManager); //过滤 Map<String, String> filterChainDefinitionMap = new LinkedHashMap(); //filterChainDefinitionMap.put("/user/add", "anon"); //filterChainDefinitionMap.put("/user/update", "authc"); filterChainDefinitionMap.put("/user/*", "authc");//可使用通配符* shiroFilterFactoryBean.setFilterChainDefinitionMap(filterChainDefinitionMap); shiroFilterFactoryBean.setLoginUrl("/toLogin"); return shiroFilterFactoryBean; } //第二步:创建DefaultWebSecurityManager对象 @Bean public DefaultWebSecurityManager getDefaultWebSecurityManager(@Qualifier("userRealm") UserRealm userRealm){ DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager(); securityManager.setRealm(userRealm); return securityManager; } //第一步:创建Realm对象 @Bean public UserRealm userRealm(){ return new UserRealm(); } }

shiro使用方法

基本配置

  1. 获取当前subject Subject subject = SecurityUtils.getSubject();
  2. 建立令牌 UsernamePasswordToken usernamePasswordToken = new UsernamePasswordToken(username, password);
  3. try catch判断登录是否成功 try { subject.login(usernamePasswordToken); //未异常,登陆成功 return "index"; } catch (UnknownAccountException e) { //用户名不存在 e.printStackTrace(); model.addAttribute("msg", "用户名不存在"); return "toLogin"; } catch (IncorrectCredentialsException e) { //密码错误 e.printStackTrace(); model.addAttribute("msg", "密码错误"); return "toLogin"; }
  4. UserRealm类中进行认证 @Override protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authenticationToken) throws AuthenticationException { System.out.println("AuthenticationInfo=>执行"); String userName = "admin"; String password = "123456"; UsernamePasswordToken token = (UsernamePasswordToken) authenticationToken; if(!token.getUsername().equals(userName)) { return null; } //可将用户信息对象存入第一个参数内 return new SimpleAuthenticationInfo("",password, ""); }

角色授权

代码语言:javascript
复制
//授权
@Override
protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) {
    //建立授权对象
    SimpleAuthorizationInfo simpleAuthorizationInfo = new SimpleAuthorizationInfo();
    //获取当前用户对象
    Subject subject = SecurityUtils.getSubject();
	//获取用户信息
    Blogger blogger = (Blogger) subject.getPrincipal();
    //判断是否为root用户
    //真实项目中通过判断数据库字段权限类型
    String user = blogger.getUserName().equals("root")?"user:add":"user:update";
    //添加权限
    simpleAuthorizationInfo.addStringPermission(user);
	
    return simpleAuthorizationInfo;
}

Shiro整合thymeleaf

  1. 添加maven依赖 <dependency> <groupId>com.github.theborakompanioni</groupId> <artifactId>thymeleaf-extras-shiro</artifactId> <version>2.0.0</version> </dependency>
  2. 添加命名空间 xmlns:shiro="http://www.pollix.at/thymeleaf/shiro"
  3. 在ShiroConfig中配置Bean @Bean(name = "shiroDialect") public ShiroDialect shiroDialect(){ return new ShiroDialect(); }
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-06-14 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 整合Shrio
    • 整合方法
      • shiro使用方法
        • 基本配置
        • 角色授权
      • Shiro整合thymeleaf
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档