如何在同一页面中选择管理视图或用户视图?

时间:2014-10-29 10:24:24

标签: java jsp login

在管理员和用户级别之间重定向页面时出现问题。这是我的 checklogin.jsp 文件:

<%
String name = request.getParameter("username");
String pass = request.getParameter("password");
try {
    Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
    Connection con = DriverManager.getConnection("jdbc:sqlserver://localhost:1433;databaseName=demoLoginAdminUser", "sa", "sa");
    Statement st = con.createStatement();
    ResultSet rs = st.executeQuery("select * from reg");
    int x = 0;
    while (rs.next()) {
        if ((rs.getString("username").equals(name)) && rs.getString("password").equals(pass)) {
            String stp = rs.getString("uType");
            if (stp.equals("admin")) {
                x = 1;
                break;
            } else {
                x = 2;
                break;
            }
        }
    }
    if (x == 2) {
        response.sendRedirect("student.jsp");
    } else if (x == 1) {
        response.sendRedirect("admin.jsp");
    } else {
        out.println("Either you enter Invalid UserName or Password! Please Try Again");
%>
        <jsp:include page="index.html" />
    <%}
        } catch (Exception e) {
            out.println(e);
        }
        session.setAttribute("username", name);
    %> 

我已将管理员重定向到 admin.jsp ,并将用户重定向到 student.jsp 。 现在我想登录 home.jsp 页面。 例如,使用admin登录然后 home.jsp 将显示编辑按钮,否则,此按钮将被隐藏。这是我想要的图片 http://imgur.com/TJYtAu5

所以这是用于将管理员和用户重定向到 admin.jsp student.jsp 的逻辑。但我想只使用一个页面,如果你是管理员,一些按钮将被启用,如果不是那个按钮将被隐藏。

感谢阅读。我希望有人帮助我。 :)

2 个答案:

答案 0 :(得分:0)

正如San Krish所说,你真的应该用一个可以实现相同逻辑的servlet替换这个JSP,并在最后重定向 - 就像你现在一样 - 或转发到JSP页面。 / p>

但无论如何,你不应该依赖简单的重定向来区分用户和管理员。通常的方式是使用一个或多个session(s)属性来存储登录名和/或用户的角色。然后在JSP页面中测试名称或更好的角色,以决定是否显示按钮。最好不要显示它们而不是简单地隐藏它们,因为用户总是可以在浏览器中看到源HTML。

您应该在处理表单提交时进行测试,允许会话中的用户执行此操作,而不是依赖于非管理员不应该看到按钮的事实:请求可以很容易伪造。

答案 1 :(得分:0)

您只需在会话中添加一个标记:

<强> checklogin.jsp

session.setAttribute("isAdmin", stp.equals("admin"));
session.setAttribute("username", name);
带有taglib的

home.jsp

<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

<c:if test="${isAdmin}">
  <button>Admin Action</button>
</c:if>

home.jsp 没有taglib

<%if((Boolean)(session.getAttribute("isAdmin")) {%>
  <button>Admin Action</button>
<%}%>