.net core 2.0 登陸許可權驗證

來源:互聯網
上載者:User

標籤:cookie   username   task   color   identity   ddc   var   mod   state   

首先在Startup的ConfigureServices方法添加一段許可權代碼

services.AddAuthentication(x=> {                x.DefaultAuthenticateScheme = CookieAuthenticationDefaults.AuthenticationScheme;                x.DefaultChallengeScheme = CookieAuthenticationDefaults.AuthenticationScheme;                x.DefaultSignInScheme = CookieAuthenticationDefaults.AuthenticationScheme;            }).AddCookie(CookieAuthenticationDefaults.AuthenticationScheme, x =>                    {                        //登入地址                        x.LoginPath = "/Home/Login";                        //sid                        x.Cookie.Name = "mycookie";                        x.Cookie.Path = "/";                        x.Cookie.HttpOnly = true;                        x.Cookie.Expiration = new TimeSpan(0, 0, 30);                        x.ExpireTimeSpan = new TimeSpan(0, 0, 30);                    });

這裡整理下目錄。

有個HomeController,首頁的Index頁面添加[Authorize],需要許可權進入

有個Login的action,登入頁

添加登入方法SignIn

public async Task<IActionResult> SignIn(LoginViewModel model)        {            if (ModelState.IsValid)            {                var claims = new List<Claim>();                claims.Add(new Claim(ClaimTypes.Name, model.UserName));                var identity = new ClaimsIdentity(claims, "login");                var principal = new ClaimsPrincipal(identity);                await HttpContext.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme, principal);                if (principal.Identity.IsAuthenticated)                    return RedirectToAction("Index");            }            return View();        }

添加登入頁面

@{    ViewData["Title"] = "Login";}<h2>Login</h2><form method="post" action="/home/SignIn">    使用者名稱<input type="text" name="username" />    密碼<input type="password" name="password" />    <button type="submit" class="btn">登入</button></form>

因為在Startup裡面配置了當沒許可權時進入登入頁面  

                        x.LoginPath = "/Home/Login";

此時運行程式,會跳轉到登入頁面

輸入使用者名稱密碼登陸,登入驗證成功後就可以跳轉到Index了。

再添加個退出

public async Task<IActionResult> SignOut()        {            if (HttpContext.User.Identity.IsAuthenticated)                await HttpContext.SignOutAsync(CookieAuthenticationDefaults.AuthenticationScheme);            return RedirectToAction("Login");        } 

在頁面上可以通過這段代碼判斷是否登入

Context.User.Identity.IsAuthenticated

 

.net core 2.0 登陸許可權驗證

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.