spring boot 整合 shiro 权限框架

201 阅读1分钟

1.配置 pom

<shiro.version>1.4.0</shiro.version>

org.apache.shiro shiro-core ${shiro.version} org.apache.shiro shiro-web ${shiro.version} org.apache.shiro shiro-ehcache ${shiro.version} org.apache.shiro shiro-spring ${shiro.version} 如果相对electron有更多直观理解的, 也可以参考:

www.sangpi.com

MyShiroRealm.页游java package org.fh.realm; import java.util.Collection; import java.util.HashSet; import org.apache.shiro.authc.*; import org.apache.shiro.authz.AuthorizationInfo; import org.apache.shiro.authz.SimpleAuthorizationInfo; import org.apache.shiro.realm.AuthorizingRealm; import org.apache.shiro.session.Session; import org.apache.shiro.subject.PrincipalCollection; import org.fh.service.system.UsersService; import org.fh.util.Const; import org.fh.util.Jurisdiction; import org.fh.entity.PageData; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Lazy;

public class MyShiroRealm extends AuthorizingRealm {

@Autowired @Lazy private UsersService usersService; /**

  • 登录认证 */ @Override protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authenticationToken) throws AuthenticationException { UsernamePasswordToken token = (UsernamePwww.sangpi.comasswordToken)authenticationToken; //UsernamePasswordToken用于存放提交的登录信息 PageData pd = new PageData(); pd.put("USERNAME", token.getUsername()); try { pd = usersService.findByUsername(pd); if (pd != null){

return new SimpleAuthenticationInfo(pd.getString("USERNAME"), pd.getString("PASSWORD"), getName()); } } catch (Exception e) { return null; } return null;

} @Override protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) { String USERNAME = (String) super.getAvailablePrincipal(principals); SimpleAuthorizationInfo info = new SimpleAuthorizationInfo(); Session session = Jurisdiction.getSession(); Collection shiroSet= new HashSet(); shiroSet = (Collection)session.getAttribute(USERNAME + Const.SHIROSET); if(null != shiroSet){ info.addStringPermissions(shiroSet); return info; }else { return null; } } }