我在这里找到了可以解决我的问题的代码,但我没有任何idead如何工作。
代码:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<html>
<head>
<title>Sample Page</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<c:choose>
<c:when test="${pageContext.request.isUserInRole('admin')}">
<p>Content for admin.<p>
</c:when>
<c:when test=${pageContext.request.isUserInRole('someRole')}">
<p>Some content here</p>
<c:when>
<c:otherwise>
<p>Another Content</p>
</c:otherwise>
</c:choose>
</body>
</html>
我不知道的是它是如何运作的pageContext.request.isUserInRole('admin')
。
我的所有用户和user_roles都在数据库中。
那么pageContext.request.isUserInRole('admin')
从哪里获取数据呢?
你能举例说明它是如何工作的吗?我应该如何将用户角色的信息从servlet传递给pageContext.request.isUserInRole('admin')
。
答案 0 :(得分:1)
你所说的是Role Based Authentication。您不需要将角色从servlet传递给jsp,而是需要在xml文件中对其进行配置
现在查看request#isUserInRole
根据文档执行的操作
返回一个布尔值,指示经过身份验证的用户是否 包含在指定的逻辑&#34;角色&#34;中。角色和角色成员资格 可以使用部署描述符定义。如果用户还没有 经过身份验证后,该方法返回false。
关于jsp安全机制的完整tutorial。
另见:
答案 1 :(得分:0)
我认为你必须做一个登录页面,然后在登录后,你必须调用一个servlet / controller来检查你的用户凭证(从数据库)然后重定向到上面的页面。您必须在响应中(或在模型中,如果您使用spring-mvc)输入用户角色信息并在jsp中使用它。
我会给你发一个登录弹簧控制器的例子
@Controller
@SessionAttributes({"user"})
public class UsersController {
@Autowired
UsersBo usersBo;
@RequestMapping(value = "/doLogin", method = RequestMethod.POST)
public ModelAndView login(
@RequestParam(DSTAConstants.PARAM_EMAIL) String email,
@RequestParam(DSTAConstants.PARAM_PSW) String psw,
Model model) {
try {
//This is a call to a DAO that find data in the database
Users user = usersBo.checkLogin(email, psw);
//If the dao found a User
if (user != null) {
//Put the user into the model
model.addAttribute("user", user);
return new ModelAndView("mainPage");
}
else {
model.addAttribute("msg","Utente non Trovato o Password Errata.");
return new ModelAndView("login");
}
}
catch (Exception e) {
model.addAttribute("msg", e.getMessage());
System.out.println("Eccezione: " + e.getMessage());
return new ModelAndView("login");
}
在此代码之后,您可以使用以下代码在jsp中使用“user”:
<%
Users user = (Users) session.getAttribute("user");
%>
你可以用这种方式使用user.getRole()
<% if (user.getRole() == 1) { >%
<p>Some content here</p>
<% }
else {
%>
<p>Content for admin</p>
<% } %>
记住:我的代码使用Spring-MVC ...如果你不使用它,你必须做一些不同的事情