Springboot shrio 放行/login 以及login的参数怎么写?
时间: 2023-07-20 07:16:32 浏览: 39
在Spring Boot和Shiro中,可以通过Shiro的过滤器链来进行URL的权限管理。对于放行/login接口,可以在ShiroConfig中通过如下方式配置:
```
@Bean
public ShiroFilterFactoryBean shiroFilterFactoryBean(DefaultWebSecurityManager securityManager) {
// 创建ShiroFilterFactoryBean
ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean();
// 设置SecurityManager
shiroFilterFactoryBean.setSecurityManager(securityManager);
// 设置登录接口,不需要认证
shiroFilterFactoryBean.setLoginUrl("/login");
// 设置过滤器链
Map<String, String> filterChainDefinitionMap = new LinkedHashMap<>();
// 放行登录接口
filterChainDefinitionMap.put("/login", "anon");
// 设置其他接口需要认证
filterChainDefinitionMap.put("/**", "authc");
// 设置过滤器链
shiroFilterFactoryBean.setFilterChainDefinitionMap(filterChainDefinitionMap);
return shiroFilterFactoryBean;
}
```
其中,`setLoginUrl`方法用于设置登录接口,`put("/login", "anon")`用于将/login接口放行,其他接口需要认证通过才能访问。
对于/login接口的参数,可以根据具体的业务逻辑进行定义。一般来说,登录接口需要传递用户名和密码,可以通过如下方式进行定义:
```
@PostMapping("/login")
public String login(String username, String password, HttpServletRequest request) {
// 验证用户名和密码
// ...
// 设置登录信息
Subject currentUser = SecurityUtils.getSubject();
UsernamePasswordToken token = new UsernamePasswordToken(username, password);
try {
currentUser.login(token);
// 登录成功
} catch (AuthenticationException e) {
// 登录失败
}
}
```
在上述代码中,`login`方法接收用户名和密码,然后通过`Subject`对象进行登录验证,最后根据登录结果返回对应的信息。