前のURLを空のセッションで取得しようとしています。たとえば、ユーザーがurlと入力して直接Webページを開いたとします。 xyz.com/dashboard/にログインしていないため、セッションが空であるためxyz.com/login/にリダイレクトされ、資格情報を入力してxyz.com/dashboard/に自動的にリダイレクトされます。ASP.NET MVCでセッションの期限切れの前のURLを取得する方法
ありがとう
前のURLを空のセッションで取得しようとしています。たとえば、ユーザーがurlと入力して直接Webページを開いたとします。 xyz.com/dashboard/にログインしていないため、セッションが空であるためxyz.com/login/にリダイレクトされ、資格情報を入力してxyz.com/dashboard/に自動的にリダイレクトされます。ASP.NET MVCでセッションの期限切れの前のURLを取得する方法
ありがとう
ユーザーをxyz.com/login?next=<the url user accessed>
にリダイレクトしてから、正常にログインした後、next
クエリ文字列値で指定されたURLにユーザーをリダイレクトします。
私は通常、このアプローチを使用しましたが、私は思ったクッキーとセッションを使って同じことをすることもできます。 –
@MAdeelKhalidはい、できます。基本的には、HTTPのステートレスな性質のため、要求の一部として以前のURLを何とか送信することです。 – Ankur
同意します。ただし、2人の異なるユーザー/ユーザーのセッションが同時に期限切れになり、異なるページでは、両方のクエリ文字列がどのようにユニークになるのでしょうか? –
@Ankurの答えを補足するために、MVCとAngular JSコードを含めて、必要な動作を実現しています。
AccountController.cs
[HttpGet]
[Route("login")]
public ActionResult Login(string returnUrl)
{
if (Request.IsAuthenticated)
return RedirectToAction("Home", "Dashboard");
return View(new AccountLoginModel() { ReturnUrl = returnUrl });
}
[HttpGet]
public ActionResult Login()
{
if (Request.IsAuthenticated)
return RedirectToAction("Home", "Dashboard");
return View(new AccountLoginModel() { ReturnUrl = string.Empty });
}
Login.chtml
<div data-ng-controller="AccountLoginViewModel" ng-init="returnUrl = '@Model.ReturnUrl'" class="centered">
... HTML code here
<button type="button" class="btn" ng-click="login()">Login</button>
</div>
AccountLoginViewModel.js
$scope.login = function() {
viewModelHelper.apiPost('api/account/login', $scope.accountModel,
function (result) {
if ($scope.returnUrl != '' && $scope.returnUrl.length > 1) {
window.location.href = rootPath + $scope.returnUrl.substring(1);
}
else {
window.location.href = rootPath + "dashboard/home";
}
});
}
}
はStackOverflowのへようこそhttp://stackoverflow.com/helpを見てください。 /どのように質問をするかについての質問。あなたはこの質問に対して良い答えを得ることはまずありません。 – gsharp
私はあなたの評判をリセットしました。質問を改善するために時間をかけてください(主にあなたの努力を示す情報が欠けています)。 –