Shiro是目前廣泛應用于Java企業開發的安全框架之一,它可以與SpringBoot和Vue等技術棧結合使用。下面我們來具體了解一下如何將Shiro、SpringBoot和Vue進行整合。
首先,我們需要在SpringBoot中引入Shiro的相關依賴:
<dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-spring-boot-starter</artifactId> <version>1.7.1</version> </dependency>
在SpringBoot配置文件中配置Shiro相關信息:
shiro: # 配置自定義Realm實現 realm-class: com.example.shirodemo.shiro.UserRealm # 配置jwt jwt: secret: yourSecret expireMillis: yourExpireTime
然后,我們需要實現自定義的Realm,根據實際業務邏輯來進行用戶鑒權。
public class UserRealm extends AuthorizingRealm { @Autowired private UserMapper userMapper; @Override protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) { SimpleAuthorizationInfo authorizationInfo = new SimpleAuthorizationInfo(); User user = (User) principals.getPrimaryPrincipal(); authorizationInfo.addRoles(user.getRoles()); authorizationInfo.addStringPermissions(user.getPermissions()); return authorizationInfo; } @Override protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException { String username = (String) token.getPrincipal(); User user = userMapper.findByUsername(username); if(user == null) { throw new UnknownAccountException(); } SimpleAuthenticationInfo authenticationInfo = new SimpleAuthenticationInfo(user, user.getPassword(), getName()); return authenticationInfo; } }
在Vue中使用Shiro可以基于Shiro提供的token進行用戶鑒權,并通過axios攔截器將該token帶到請求頭上,從而實現前后端聯動的用戶認證與授權。
import axios from 'axios' axios.interceptors.request.use( config =>{ if (localStorage.token) { config.headers.Authorization = `Bearer ${localStorage.token}` } return config }, error =>{ return Promise.reject(error) })
通過以上步驟,我們就可以實現Shiro、SpringBoot和Vue的整合。Shiro提供了強大的用戶認證和授權功能,可以在企業級應用中保障系統的安全性和穩定性。