在SSM框架中可以使用Spring Security来实现控制器判断角色并登录不同页面代码
时间: 2023-06-08 11:05:12 浏览: 116
可以通过在Spring Security的配置文件中进行角色控制和页面访问权限的配置,同时将Spring Security与SSM框架整合使用来实现控制器判断角色并登录不同页面的代码编写。具体步骤如下:
1.在Spring Security的配置文件中配置角色和页面访问权限:
```
<http auto-config="true">
<intercept-url pattern="/admin/**" access="hasRole('ROLE_ADMIN')" />
<intercept-url pattern="/user/**" access="hasRole('ROLE_USER')" />
<form-login login-page="/login" default-target-url="/home" authentication-failure-url="/login?error" />
<logout logout-success-url="/login?logout" />
</http>
```
其中,`intercept-url`标签表示需要进行拦截保护的URL地址,`access`属性表示访问该URL需要的角色,`form-login`标签则用于配置登录页面和登录成功后的跳转URL地址。
2.在SSM框架的控制器中判断用户角色并跳转到对应页面:
```
@RequestMapping("/admin")
public String adminPage(Model model) {
Authentication auth = SecurityContextHolder.getContext().getAuthentication();
String username = auth.getName(); // 获取当前用户的用户名
boolean isAdmin = auth.getAuthorities().stream()
.anyMatch(r -> r.getAuthority().equals("ROLE_ADMIN"));
if (isAdmin) {
model.addAttribute("username", username);
return "admin-page";
} else {
return "access-denied-page";
}
}
@RequestMapping("/user")
public String userPage(Model model) {
Authentication auth = SecurityContextHolder.getContext().getAuthentication();
String username = auth.getName();
boolean isUser = auth.getAuthorities().stream()
.anyMatch(r -> r.getAuthority().equals("ROLE_USER"));
if (isUser) {
model.addAttribute("username", username);
return "user-page";
} else {
return "access-denied-page";
}
}
```
在控制器中,我们通过`SecurityContextHolder.getContext().getAuthentication()`方法获取当前用户的认证信息,再通过`getAuthorities()`方法获取用户所拥有的角色,并根据角色判断跳转到哪个页面。
注意,为了增强安全性,还需在页面中进行CSRF防护和XSS防护等措施。
阅读全文