0

ここにあるすべての投稿を見てきましたが、どれも私の問題を解決していません。

URL にアクセスします: /Users/KickOutUser

public void KickOutUser()
        {
            TempData["ErrorMessage"] = "You need to be logged in to access that content";
            //Redirect to Login
            RedirectToAction("Login");
        }

        /*user controller*/
        public ActionResult Login()
        {
            //E.G ErrorMessage comes from HandleUnauthenticatedUser 
            ViewData["ErrorMessage"] = TempData["ErrorMessage"] ?? null;
            return View();
        }

デバッグすると、最初のメソッドにヒットしてからリダイレクトすることがわかりますが、リダイレクト呼び出しが Login メソッドを呼び出すことはなく、最終的に空白のビューになります..

4

2 に答える 2

2
public void KickOutUser()

このメソッドは何も返しません。これを読んでください

したがって、この場合、次のようにreturn ActionResultor betterを実行できます。ViewResult

    public ActionResult KickOutUser()
    {
        TempData["ErrorMessage"] = "You need to be logged in to access that content";
        //Redirect to Login
        return RedirectToAction("Login");
    }

お役に立てれば :)

于 2012-08-08T05:14:34.770 に答える
1

アクション メソッド (ActionResult 戻り型を持つ) から RedirectToAction を返す必要があります。RedirectToAction を単独で呼び出しても何も起こりません。

ただし、これはセキュリティを処理する方法ではありません。代わりに AuthorizationFilter を使用してアクセスを制御する必要があります。

于 2012-08-08T05:13:01.250 に答える