Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在spring中限制对url的直接访问_Java_Javascript_Android_Jquery_Spring Security - Fatal编程技术网

Java 如何在spring中限制对url的直接访问

Java 如何在spring中限制对url的直接访问,java,javascript,android,jquery,spring-security,Java,Javascript,Android,Jquery,Spring Security,在web应用程序中,当用户访问学生列表页面时,屏幕将显示带有超链接的学生姓名列表。仅显示允许用户查看的学生姓名。当用户单击超链接时,将打开一个新窗口,显示用户的详细信息。子窗口的地址栏显示url,如下所示 myhost:8080/学生ID=100 问题是,用户可能会更改参数studentID的值,并获取他/她没有资格查看的其他学生的详细信息,因此不会显示在上一个列表屏幕中。这是一个安全问题—url操纵 我可以想出一些方法来防止这种情况 您需要使用cookie和唯一的会话ID。因此,用户登录并获得

在web应用程序中,当用户访问学生列表页面时,屏幕将显示带有超链接的学生姓名列表。仅显示允许用户查看的学生姓名。当用户单击超链接时,将打开一个新窗口,显示用户的详细信息。子窗口的地址栏显示url,如下所示

myhost:8080/学生ID=100

问题是,用户可能会更改参数studentID的值,并获取他/她没有资格查看的其他学生的详细信息,因此不会显示在上一个列表屏幕中。这是一个安全问题—url操纵


我可以想出一些方法来防止这种情况

您需要使用cookie和唯一的会话ID。因此,用户登录并获得一个唯一密钥,该密钥对应于具有这些临时访问令牌或会话id的数据库表。通常,这些令牌仅在一段时间内有效。在服务器端,您可以将cookie值测试到数据库,并重定向不允许访问的用户。祝你好运,你问对了问题,继续

您不需要打开单独的窗口。这里有一些例子。我在这里使用Jquery

<script type='text/javascript' src='http://code.jquery.com/jquery-1.6.4.js'></script>
Jquery

$(document).ready(function(){
    $("#blockbox").fadeOut(0);

    $("div a").click(function(e){
    e.preventDefault();
       $("#blockbox").fadeIn(100);
        //$("#data").html($(this).attr("stid"));

        //This will sent studentID to relevent page
        //and retrieve the result
        $.post("myhost:8080", 
        {
            studentID:$(this).attr("stid"),
        }
        ).done(function(data) {
            $("#data").html(data);
        });
    });

     $(".close").click(function(e){
       $("#blockbox").fadeOut(100);
    });
});
服务器端脚本捕获由$.post方法发送的studentID。我在这里使用php

<?php
$studentID=$_POST['studentID'];
//echo student details
?>

使用Spring框架实现基于角色的安全性

有关教程,您可以参考:

Prakash的答案是最好的起点——但从这个问题上看,你似乎在寻找更细粒度的安全性——什么定义了用户可以看到的学生?它是否像用户可以看到学生那样简单?在这种情况下,基本的基于角色的安全性就可以了,还是用户只能看到选定的学生组。老师只能看到他们教的学生?后者最容易通过基于角色加控制器级别的验证/检查请求是否有效来解决
$(document).ready(function(){
    $("#blockbox").fadeOut(0);

    $("div a").click(function(e){
    e.preventDefault();
       $("#blockbox").fadeIn(100);
        //$("#data").html($(this).attr("stid"));

        //This will sent studentID to relevent page
        //and retrieve the result
        $.post("myhost:8080", 
        {
            studentID:$(this).attr("stid"),
        }
        ).done(function(data) {
            $("#data").html(data);
        });
    });

     $(".close").click(function(e){
       $("#blockbox").fadeOut(100);
    });
});
<?php
$studentID=$_POST['studentID'];
//echo student details
?>
.done(function(data) {
            $("#data").html(data);
        });