亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在身份驗證 ASP.CORE 期間重定向到多個頁面

在身份驗證 ASP.CORE 期間重定向到多個頁面

C#
慕姐8265434 2022-06-19 16:54:35
在我的 ASP.CORE 應用程序上,我使用了用戶身份驗證。我接下來要做的是:當用戶訪問該站點時,如果他未在該站點上授權-向他顯示主頁但如果他之前已獲得授權-向他顯示另一個頁面(在我的示例中為加密控制器頁面)。但是如果他從主頁導航到 /Encrypt ,程序應該將他重定向到登錄頁面(現在它是如何工作的)。在配置啟動時,我嘗試在用戶訪問該站點時重定向到另一個頁面 /Encrypt(默認)如果用戶之前被授權 - 所有工作(他重定向到 /Encrypt 頁面)但是如果他之前沒有被授權,程序將重定向他到帳戶控制器上的登錄頁面。這就是問題所在。我注意到如果用戶之前被授權(僅當之前未授權(沒有身份驗證 cookie)),帳戶控制器不會啟動,所以我無法使用帳戶控制器重定向。 那么,在哪里攔截請求(或閱讀它)或在哪里執行對 cookie 的授權檢查?或者該怎么辦?我的啟動設置:public void ConfigureServices(IServiceCollection services)    {       services.AddIdentity<User, IdentityRole>()            .AddEntityFrameworkStores<ApplicationContext>();    ...public void Configure(IApplicationBuilder app, IHostingEnvironment env)    {        ...        app.UseAuthentication();        app.UseMvc(routes =>        {            routes.MapRoute(                name: "default",                template: "{controller=Encrypt}/{action=Index}");        });    }我的帳戶控制器如下所示:public class AccountController : Controller{    private readonly UserManager<User> _userManager;    private readonly SignInManager<User> _signInManager;    public AccountController(UserManager<User> userManager, SignInManager<User> signInManager)    {        _userManager = userManager;        _signInManager = signInManager;    }    [HttpGet]    public IActionResult Login(string returnUrl = null)    {        ViewData["UserName"] = this.GetUserName();        return View(new LoginViewModel { ReturnUrl = returnUrl });    }
查看完整描述

2 回答

?
收到一只叮咚

TA貢獻1821條經驗 獲得超5個贊

將此代碼添加到您的啟動以處理訪問請求:

 services.ConfigureApplicationCookie(options =>
            {
                options.AccessDeniedPath = "/Account/Access-Denied";
                options.LoginPath = "/Account/Login";
                options.LogoutPath = "/Account/Signout";
                options.SlidingExpiration = true;
            });

具體來說.AccessDeniedPath,應該通過將其附加到 Encrypt 視圖來緩解您的問題...


查看完整回答
反對 回復 2022-06-19
?
jeck貓

TA貢獻1909條經驗 獲得超7個贊

我找到了部分解決方案。


像這樣進行配置:


    public void Configure(IApplicationBuilder app, IHostingEnvironment env)

    {

        ...

        app.UseMvc(routes =>

        {

            routes.MapRoute(

                name: "default",

                template: "{controller=Home}/{action=Index}");

        });

    }

和這樣的家庭控制器:


public IActionResult Index()

        {

            if (User.Identity.IsAuthenticated & !HttpContext.Session.Keys.Contains("Key"))

            {

                HttpContext.Session.SetInt32("Key", 1);

                return RedirectToAction("Index", "Encrypt");

            }

            else 

                return View();

        }

但它在會話期間僅工作 1 次,因此第二次工作需要通過關閉瀏覽器再次啟動會話。


所以還是不好。


如果我總是在獲得授權的情況下從主頁重定向 - 他將永遠不會看到主頁。太不好了。


查看完整回答
反對 回復 2022-06-19
  • 2 回答
  • 0 關注
  • 120 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號