是否可以使用angular和ui-router生成临时URL或路由?

时间:2016-09-13 20:08:51

标签: angularjs angular-ui-router

正如问题标题所示,是否可以使用SCHTASKS /query /tn "test" | find /c "Running">Nul 2>&1&&(goto :finish) SCHTASKS /create /tn "test" /sc minute /mo 10 /tr c:\bin\go.vbs :finish echo. echo Done echo. timeout 3 生成临时URL,该URL路由到显示患者数据的视图,而不显示患者ID或URL中的任何标识信息?单击按钮时应生成链接。换句话说,一个包含ui-router等随机字符的网址。查看并处理此URL后(例如,单击www.example.com/xuye9039j23l按钮,则无法再次使用该URL)。有人可以给我一个关于如何实现这一目标的逻辑吗?我想这有点类似于save电子邮件,其中链接一旦点击就会过期。如果它很重要,我正在使用C#Web API。

2 个答案:

答案 0 :(得分:1)

我相信这可能是您正在寻找的答案:Angular ui router passing data between states without URL

但是,如果您希望更精细地控制此报告的可访问性,我会考虑采用不同的策略。

假设您有一个可以使用的数据库,也许您可​​以创建一个新的数据库表,其中可能包含以下内容:

  • 用户的ID
  • 临时生成的令牌,将用于路由到您的患者详细信息页面
  • 也许是到期日期/时间。

让您的按钮调用Web服务器上的API端点,该端点可能会执行以下操作:

  1. 给定用户ID和一些信息子集,生成信息的散列(包括当前列的ID,因为这将确保为同一用户生成的多个链接的散列的唯一性)。这将是令牌。
  2. 使用过期日期/时间将哈希值存储在新数据库表中。
  3. 使用散列/令牌响应Web请求,以便您可以使用令牌路由到客户端详细信息页面。
  4. 然后,当用户被重定向到客户端详细信息页面时,您可以使用后端(Web服务器)检查您希望为此页面的可访问性设置的到期时间或任何其他限制因素。< / p>

    我对此事的看法。

答案 1 :(得分:0)

是的,这是可能的。它更多地与您的后端代码相关,然后是javascript。

从本质上讲,您需要让服务器验证您的ID,如果它是有效的显示消息。如果它无效则返回400或其他东西并告诉他们他们的ID无效。您需要将Id保留到数据存储区,并使用某种时间/用途列说明它是否有效。

我将给出一个WebAPI示例。

app.controller('myCtrl', function($scope,$stateParams,patientService) {
    if($stateParams.id != undefined)
     {
         patientService.Get($stateParams.id).then(function(success){
         $scope.Data = success;
       },
        function(error)
       {
        //redirect or display cannot use this url message
         }
      });
}

的WebAPI

public HttpResponseMessage Get(string id)
{
     //use business logic to validate ID
     //if Id is valid return cool data

     if (isValid(id))
     {
          return  request.CreateResponse(HttpStatusCode.OK,data);
      }
   return  request.CreateResponse(HttpStatusCode.BadRequest);
}