sptingboot shiro实现用户登录验证代码
时间: 2023-03-31 22:05:01 浏览: 96
你好,以下是 springboot shiro 实现用户登录验证的代码示例:
首先,在 pom.xml 文件中添加以下依赖:
```
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-spring-boot-starter</artifactId>
<version>1.6.</version>
</dependency>
```
然后,在 application.yml 文件中配置 shiro 相关信息:
```
shiro:
loginUrl: /login
successUrl: /index
unauthorizedUrl: /unauthorized
filterChainDefinitions: /login = anon
/logout = logout
/** = authc
```
接着,在 UserRealm 类中实现用户认证和授权:
```
public class UserRealm extends AuthorizingRealm {
@Autowired
private UserService userService;
@Override
protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) {
SimpleAuthorizationInfo authorizationInfo = new SimpleAuthorizationInfo();
User user = (User) principals.getPrimaryPrincipal();
authorizationInfo.setRoles(user.getRoles());
authorizationInfo.setStringPermissions(user.getPermissions());
return authorizationInfo;
}
@Override
protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException {
UsernamePasswordToken usernamePasswordToken = (UsernamePasswordToken) token;
String username = usernamePasswordToken.getUsername();
User user = userService.findByUsername(username);
if (user == null) {
throw new UnknownAccountException("用户名或密码错误");
}
return new SimpleAuthenticationInfo(user, user.getPassword(), getName());
}
}
```
最后,在 LoginController 类中处理用户登录请求:
```
@Controller
public class LoginController {
@PostMapping("/login")
public String login(String username, String password) {
Subject subject = SecurityUtils.getSubject();
UsernamePasswordToken token = new UsernamePasswordToken(username, password);
try {
subject.login(token);
return "redirect:/index";
} catch (AuthenticationException e) {
return "redirect:/login?error";
}
}
}
```
以上就是 springboot shiro 实现用户登录验证的代码示例,希望能对你有所帮助。