欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

asp.netcoreweb頁面驗證

本例是用簡單角色驗證方式來通過用戶登錄后,獲取用戶角色,每種角色可以通過[Authorize(Roles = "admin,user")]在Action上來控制訪問的權限,也就是說,只有屬性這個角色才能訪問這個Action。

道先添加Microsoft.AspNetCore.Authentication.Cookies引用

創(chuàng)新互聯建站自成立以來,一直致力于為企業(yè)提供從網站策劃、網站設計、網站制作、做網站、電子商務、網站推廣、網站優(yōu)化到為企業(yè)提供個性化軟件開發(fā)等基于互聯網的全面整合營銷服務。公司擁有豐富的網站建設和互聯網應用系統(tǒng)開發(fā)管理經驗、成熟的應用系統(tǒng)解決方案、優(yōu)秀的網站開發(fā)工程師團隊及專業(yè)的網站設計師團隊。

在StartUp.cs的Configure方法中添加
//為驗證添加中間件
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
    //驗證方案名稱
    AuthenticationScheme = "loginvalidate",
    //沒有權限時導航的登錄action
    LoginPath = new Microsoft.AspNetCore.Http.PathString("/login"),
    //訪問被拒絕后的acion
    AccessDeniedPath = new Microsoft.AspNetCore.Http.PathString("/Home/NoPermission"),      
    AutomaticAuthenticate = true,
    AutomaticChallenge = true,
    SlidingExpiration = true
});

 

HomeController中的登錄的action實現

using System.Collections.Generic;
using System.Linq;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Authorization;
using System.Security.Claims;
 
namespace webAuth.Controllers
{
    /// <summary>
    /// 本Controller允許admin和user兩種角色可以訪問
    /// </summary>
    [Authorize(Roles = "admin,user")]
    public class HomeController : Controller
    {
        public IActionResult Index()
        {
            return View();
        }
        /// <summary>
        /// aobout只允許user角色訪問
        /// </summary>
        /// <returns></returns>
        [Authorize(Roles = "user")]
        public IActionResult About()
        {
            var id = User.Claims.SingleOrDefault(c => c.Type == ClaimTypes.Sid).Value;
            ViewData["Message"] = "UserID:"+ id;
 
            return View();
        }
        /// <summary>
        /// contact只允許admin角色訪問
        /// </summary>
        /// <returns></returns>
        [Authorize(Roles = "admin")]
        public IActionResult Contact()
        {
            var id=User.Claims.SingleOrDefault(c => c.Type == ClaimTypes.Sid).Value;
            ViewData["Message"] = "UserID:"+ id;
 
            return View();
        }
 
        public IActionResult NoPermission()
        {
            return View();
        }
 
        /// <summary>
        /// 允許所有登錄者
        /// </summary>
        /// <param name="returnUrl">如果用戶訪問的不是登錄頁,returnUrl將把這個url傳進來,待登錄成功后返回這個地址</param>
        /// <returns></returns>
        [AllowAnonymous]
        [HttpGet("login")]
        public IActionResult Login(string returnUrl)
        {
            //判斷是否驗證
            if (!HttpContext.User.Identity.IsAuthenticated)
            {
                //把返回地址保存在前臺的hide表單中
                ViewBag.returnUrl = returnUrl;
            }
            ViewBag.error = null;
            return View();
        }
        /// <summary>
        /// 允許所有登錄者
        /// </summary>
        /// <param name="username">用戶名</param>
        /// <param name="password">密碼</param>
        /// <param name="returnUrl">返回u</param>
        /// <returns></returns>
        [AllowAnonymous]
        [HttpPost("login")]
        public IActionResult Login(string username, string password, string returnUrl)
        {
            //從數據庫驗證用戶,關取出用戶所需要信息
            var users = new List<dynamic>() {
                new { ID = 1, UserName = "zsf",Password="111", Name = "張三豐", RoleTypeID = 1, RoleType = "admin", RoleTypeName = "管理員" },
                 new { ID = 2, UserName = "zwj",Password="222", Name = "張無忌", RoleTypeID = 2, RoleType = "user", RoleTypeName = "普通用戶" }
            };
            var user = users.SingleOrDefault(u => u.UserName == username && u.Password == password);
            if (user!=null)
            {
                //登錄成功后,設置聲明
                var claims = new Claim[] {
                      new Claim(ClaimTypes.UserData,username),
                      new Claim(ClaimTypes.Role,user.RoleType),
                      new Claim(ClaimTypes.Name,user.Name),
                      new Claim(ClaimTypes.Sid,user.ID.ToString())
                };
                HttpContext.Authentication.SignInAsync("loginvalidate", new ClaimsPrincipal(new ClaimsIdentity(claims, "Cookie")));
                HttpContext.User = new ClaimsPrincipal(new ClaimsIdentity(claims));
                return new RedirectResult(returnUrl == null ? "/" : returnUrl);
            }
            else
            {
                ViewBag.error = "用戶名或密碼錯誤!";
                return View();
            }
        }
    }
}

 

Login.cshtml頁面如下:

@{
    Layout = null;
}
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>登錄</title>
    <link href="~/lib/bootstrap/dist/css/bootstrap.css" rel="stylesheet" />
    <style>
        .col-md-12 {
            text-align: center;
            margin-top: 10px;
        }
 
        .input-group {
            width: 300px;
            margin: 0 auto;
        }     
        .input-group-addon{
            width:80px;
        } 
    </style>
</head>
<body>
    <form method="post" action="/login">
        <div class="container">
            <div class="row" >
                <div class="col-md-12">
                    <div class="input-group">
                        <span class="input-group-addon" id="basic-addon1">用戶名</span>
                        <input type="text" class="form-control" name="username" aria-describedby="basic-addon1">
                    </div>
                </div>
            </div>
            <div class="row">
                <div class="col-md-12">
                    <div class="input-group">
                        <span class="input-group-addon" id="basic-addon1">密碼</span>
                        <input type="password" class="form-control" name="password" aria-describedby="basic-addon1">
                    </div>
                </div>
            </div>
            <div class="row">
                <div class="col-md-12">
                    <div class="input-group" >
                        <input type="hidden" value="@ViewBag.returnUrl" name="returnUrl" />
                        <button type="submit" class="btn btn-primary" >登錄</button>
                    </div>
                </div>
            </div>
            @if (ViewBag.error != null)
            {
                <font color="red">@ViewBag.error</font>
            }
        </div>
    </form>
    <script src="~/lib/bootstrap/dist/js/bootstrap.js"></script>
    <script src="~/lib/jquery/dist/jquery.js"></script>
</body>
</html>

如果在其他頁面使用User,可以像下面這樣使用

<span>當前用戶:@User.Identity.Name</span>

當然也可以從User中查到其他登錄時存儲的Claim的值

 

登錄成功后

asp.net core web頁面驗證                            

登錄成功后訪問沒有權限頁面(當然可以不讓這種角色看到不能訪問的鏈接)

asp.net core web頁面驗證

新聞名稱:asp.netcoreweb頁面驗證
標題來源:http://aaarwkj.com/article8/phosop.html

成都網站建設公司_創(chuàng)新互聯,為您提供、網站建設、域名注冊、小程序開發(fā)App設計、自適應網站

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯

搜索引擎優(yōu)化
91精品一久久香蕉国产| 国产国产人免费人成免费人妖| 美女丝袜诱惑国产91| 亚洲欧美日本国产一区| 清纯唯美亚洲自拍第一页| 色综合色综合色综合色综合| 日本高清区一区二区三区四区五区| 精品人妻一区二区三区免费视频| 另类视频网站在线观看| 国产av白浆一区二区色爽黄| 熟女一区二区蜜桃视频| 午夜国产精品福利一二| 亚洲综合色日本日b网| 日韩欧美黄网站免费看| 亚洲综合五月天色婷婷| 91制片国产在线观看| 热99精品视频在线观看| 美女诱惑福利视频久久久| 色婷婷av一区二区三| 亚洲av一区二区三区网站| 国产专区亚洲精品欧美| 97精品在线视频免费| 在线看片国产精品自拍| 国产精品国产不卡在线| 日韩中文字幕欧美国产| 日韩一区二区人妻在线| 国产三级久久精品三级91| 国产免费久久黄av片| 国产精品乱码一区二区视频| 国产一区二区黄色在线| 人体蜜桃视频一区二区| 亚洲一区免费在线视频| 日本黄色录像黄色录像| 97国产精品成人免费视频| 最新日本人妻中文字幕| 欧美日韩在线观看黄色| 一区二区三区人妻系列| 久久亚洲一本综合久久| 亚洲国产剧情中文字幕| 日韩 高清 一区二区| 日韩人妻中文字幕乱码一区|