如果用户未登录,则停止链接

stop a link if user isn't logged in

本文关键字:链接 用户 登录 如果      更新时间:2023-09-26

你能帮我吗?这个问题似乎很简单,但我的解决方案都不起作用。

我在一个页面上有一个pdf链接表。我希望用户能够打开它们,只有当他登录。否则会弹出警告消息。

如果我们认为每个链接都在div中,如下所示:

<div class="prdc prdc-prodList noAccess">
   <a target="_blank" href="/files/test.pdf">Specification</a>
</div>

如果用户未登录,则将"noAccess"类分配给链接父类,否则将"hasAccess"类分配给它。

我有这个代码,但是(在用户注销的情况下)它不是一直工作。

$( ".prdc a" ).click(function(e) {
    if ( $( this ).parent().hasClass( "noAccess" ) ) {
        e.preventDefault();
        alert("You should be logged in to have access");
    }
});

有人知道这段代码有什么问题吗?或者你知道更好的解决方法吗?

提前感谢

首先,这不是一个好方法。这是因为一些知道如何处理开发人员工具的用户可能只是删除noAccess类并访问您的文件。因此,您应该:1. 如果用户未登录,则根本不显示链接。2. 在服务器端增加对登录用户状态的额外检查,并在用户未登录时阻止下载。

和回答你的问题:

这可能是由于使用了parent()函数造成的。它只得到一个对象的直接父对象,你想要的是closest('.noAccess')。这个函数将查找所有具有noAcess类的给定对象的前身。

希望这有帮助,干杯!

通过首先不把hrefa,然后当用户登录然后使用javascript添加href做到这一点。下面的代码说明了这一点:

<div class="prdc prdc-prodList noAccess">
   <a target="_blank" id="link">Specification</a></div>
javascript

var some_function_name = function(){
  if( some conditions if the user has loged in or not ){
    var a = document.getElementById("link");
        a.setAttriblue("href","/files/test.pdf");
 }
}

和用户登录后,你的HTML看起来像这样:

<div class="prdc prdc-prodList noAccess">
       <a target="_blank" id="link" href="/files/test.pdf">Specification</a></div>
演示