1 つのフォームに移動するために @Html.ActionLink を使用しました。そのページに移動する前に、いくつかの条件を確認したい。ユーザーがその(編集)ページへのアクセス権を持っている場合、そのユーザーだけが編集ページにリダイレクトできます。
jquery を使用して試していますが、デフォルトでは jquery event を呼び出さずに編集ページにリダイレクトするだけです。
これを行う方法 ?
1 つのフォームに移動するために @Html.ActionLink を使用しました。そのページに移動する前に、いくつかの条件を確認したい。ユーザーがその(編集)ページへのアクセス権を持っている場合、そのユーザーだけが編集ページにリダイレクトできます。
jquery を使用して試していますが、デフォルトでは jquery event を呼び出さずに編集ページにリダイレクトするだけです。
これを行う方法 ?
これはクライアントではなくサーバーロジックですが、秘密鍵、uidなどを使用して、ajaxによるサーバーとのアクティブな通信でクライアントセキュリティアルゴリズムを使用すると、いくつかの利点が得られます。次のことをお勧めします: を返すRedirectToAction
、例外をスローする、403 ステータス コードを返す、サーバーのアクセス許可を確認する、このリンクをレンダリングしないなど。
Jquery の使用
<a href="@Url.Action("NewLaunches", "Updates")" style="cursor:pointer" id="deleteLink">Delete</a>
$(document).ready(function(){
$("#deleteLink").click(function(event){
event.preventDefault();
bool isallowed= // Logic for finding access permission
if(isallowed)
{
var url = $(this).attr("href"); // picking up the url
document.location.href=url;
}
});});
はい、できます。
@Html.ActionLink
フォーム間の移動に使用しているとのことでした。だから私はあなたのActionLinkの1つがこのように見えるかもしれないと思います....
@Html.ActionLink("Edit","Home")
コントローラーは次のようになります...
public class HomeController : Controller
{
public ActionResult Edit()
{
return View();
}
}
ここで編集アクション内で、必要なアクセス権を確認できます。次に例を示します。
public class HomeController : Controller
{
public ActionResult Edit()
{
if(Request.IsAuthenticated && SomeOtherCondition()) {
{
// if all ok, then forward to Edit page
return View();
}
else{
// send back to home.
return("Index");
}
}
}
PS:クライアント側(jquery)ではなく、サーバー側でアクセス権の検証を行うことを強くお勧めします。