ASP.NET MVC 单点登录(Single Signe On) 您所在的位置:网站首页 ids单点登录 ASP.NET MVC 单点登录(Single Signe On)

ASP.NET MVC 单点登录(Single Signe On)

#ASP.NET MVC 单点登录(Single Signe On)| 来源: 网络整理| 查看: 265

一、定义:    单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统-【百度百科】

二、非单点登录和单点登录的比较

image

三、在ASP.NET MVC中实现单点登录:(使用Forms身份验证方式)

1.启用单点登录:

单点登录的关键点:必须在所有web 应用程序的配置文件中的System.Web节点中加入MachineKey节点:

2.创建三个web mvc application:

SSO,Web1,Web2:

3.在SSO中:

添加控制器:AccountController.cs:

namespace SSO.Controllers { public class MyAccountController : Controller { [AllowAnonymous] public ActionResult Login(string returnUrl) { if (Request.IsAuthenticated) { return RedirectToAction("Index","Home"); } ViewBag.ReturnUrl = returnUrl; return View(); } [AllowAnonymous] [HttpPost] [ValidateAntiForgeryToken] public ActionResult Login(string userName, string password, string returnUrl) { if (FormsAuthentication.Authenticate(userName, password)) { FormsAuthentication.SetAuthCookie(userName, false); if (!string.IsNullOrEmpty(returnUrl)) { return Redirect(returnUrl); } else { return RedirectToAction("Index", "Home"); } } else { ModelState.AddModelError(string.Empty, "Invalid login details"); ViewBag.ReturnUrl = returnUrl; return View(); } } } }创建视图Login.cshtml:

@{ ViewBag.Title = "Login"; } Login @using (Html.BeginForm(new { ReturnUrl = ViewBag.ReturnUrl })) { @Html.ValidationSummary() @Html.AntiForgeryToken() @Html.Label("Username") @Html.Editor("UserName") @Html.LabelForModel("Password") @Html.Password("Password") } 在Web.configsystem.web节点下加入:(machinekey生成方式:https://blogs.msdn.microsoft.com/amb/2012/07/31/easiest-way-to-generate-machinekey/)

设置项目PageUrl:

4.在Web1 和web2中分别创建HomeController:(加上Authorize attribute)

[Authorize] public class HomeController : Controller { // // GET: /Home/ public ActionResult Index() { return View(); } }创建Index.cshtml:

@{ ViewBag.Title = "Web App1 Home"; } Web App1 Home Logged in as @User.Identity.Name @{ ViewBag.Title = "Web App2 Home"; } Web App2 Home Logged in as @User.Identity.Name

5.启动web1,会自动重定向到http://localhost/SSO/Account/Login?ReturnUrl=%2fWebApp1%2f

image

输入用户名和密码,登录成功: image

再启动Web2,则不会重定向到login 页面,而是到登录成功页面:

image



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有