ASP.NET MVC2 中的单用户登录非常简单?

2023-12-23

我正在构建我的网站,并且我想限制我的网站的一部分(管理部分)正常公开显示。

  • 我正在使用 LINQ 进行数据库访问。
  • 我有一个 Service 类来处理通过 LINQ 对数据库的调用
  • 我的整个网站都在运行,除了登录部分。

到目前为止我已经only能够找到使用 MembershipProvider 和/或 RoleProviders 等的示例。说实话,对于我想要的东西来说,这似乎需要太多工作。这一切都必须做如果您在输入字段中输入正确的密码,则让您进入。

我真的不能避开提供者吗?


由于您只有一个用户,因此不需要创建数据库依赖项。您可以基于硬编码凭据创建一个非常简单的授权服务。例如,

public class AuthorizationService{
     private AuthorizationService(){}
     public static readonly AuthorizationService Instance = new AuthorizationService();

     private const string HardCodedAdminUsername = "someone";
     private const string HardCodedAdminPassword = "secret";
     private readonly string AuthorizationKey = "ADMIN_AUTHORIZATION";

     public bool Login(string username, string password, HttpSessionStateBase session){
         if(username.ToLowerInvariant().Trim()==HardCodedAdminUsername && password.ToLowerInvariant().Trim()==HardCodedAdminPassword){
              session[AuthorizationKey] = true;
              return true;
         } 
         return false;
     }

     public void Logout(HttpSessionStateBase session){
        session[AuthorizationKey] = false;
     }

     public bool IsAdmin(HttpSessionStateBase session){
         return session[AuthorizationKey] == true;
     }
}

然后你就可以构建一个自定义的IAuthorizationFilter like:

public class SimpleAuthFilterAttribute: FilterAttribute, IAuthorizationFilter{
     public void OnAuthorization(AuthorizationContext filterContext){
         if(!AuthorizationService.Instance.IsAdmin(filterContext.HttpContext.Session)){
              throw new UnauthorizedAccessException();
         }
     }
}

然后你所要做的就是用以下内容装饰受保护的控制器操作SimpleAuthFilter并且您的应用程序的登录突然有效。耶! (请注意,我在 StackOverflow 应答窗口中编写了所有这些代码,因此您可能需要在其实际运行之前清除拼写错误等)

Also,如果您发现不必要的话,可以重构它以省略用户名。您需要创建一个控制器操作Login and Logout进行相应的调用AuthorizationService,如果您希望受保护的控制器操作始终可访问。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ASP.NET MVC2 中的单用户登录非常简单? 的相关文章

随机推荐

  • 从 php 调用 wordnet(PHP 的 Wordnet 类或 API)

    我正在尝试编写一个程序来查找两个文档之间的相似性 由于我只使用英语 所以我决定使用wordnet 但是我找不到将wordnet与php链接的方法 我无法从php找到任何wordnet api 我在论坛上看到有人说 Spudley 他从 ph
  • 如何在 Jest 中使用 axios 模拟 API 调用?

    我是测试新手 对使用 ES6 类模拟 API 和 axios 实例有一些疑问 我有一个index js import axios from axios export default class Pushkin constructor thi
  • 结构体和结构体第一个成员之间的指针别名[重复]

    这个问题在这里已经有答案了 C 中的指针别名通常是未定义的行为 因为严格别名 但 C11 标准似乎允许对指向结构的指针和指向结构的第一个成员的指针进行别名 C11 6 7 2 1 15 指向结构对象的指针 指向其初始成员 反之亦然 那么下面
  • 替代设置按钮

    我在我的android项目中使用这个代码 alertDialog setButton OK new DialogInterface OnClickListener public void onClick DialogInterface di
  • 并行流可以在不同的操作下正常工作吗?

    我正在阅读有关无国籍状态的文章 并在doc https docs oracle com javase 8 docs api java util stream package summary html Statelessness 如果流管道结
  • 在 .NET Framework 应用程序中使用 .NET Core 类库

    我的 NET Core 类库为我的数据库提供了一个模型 我的 WPF 应用程序需要引用该类库才能访问数据库 是否可以将 WPF 应用程序的引用添加到类库并使用此模型 我的类库基于 NET Core 3 1 构建 我的 WPF 应用程序基于
  • 如何使用 Citrix ShareFile API 进行搜索

    我正在为一个项目使用 Sharefile REST API 但遇到了问题 他们缺乏文档 到目前为止 我向 api 地址发送的 5 封电子邮件都没有得到答复 我想我会众包这个 我需要做的是按文件名搜索文件 并且它还必须有一个特定的parent
  • 是否有可能以某种方式使该程序崩溃?

    我目前正在大学的一门课程中学习 C 现在我们有一个任务要解决 但我不知道该怎么做 任务如下所示 是否有可能让这个程序因用户输入而崩溃 如果是这样 请解释一下这种情况 我们得到的程序非常简单 如下所示 include
  • 如何从glm结果中得到方程

    我创建了一个逻辑回归glm功能 mynewlogit lt glm is bad ulmp s ratio plmp mac all 60d plmp est mac all 90d plmp c mac all 90d lmp s rat
  • apt-get update 非交互式

    我正在尝试进行完全非交互的更新 在 ubuntu 14 04 3 LTS 上 我认为使用这种类型的命令会很容易 export DEBIAN FRONTEND noninteractive apt get update apt get upg
  • 使用 Delphi 获取全文提要

    我正在开发一个 Delphi 程序 它通过组件 Indy idHTTP 读取提要的源代码 但是提要看起来并不完整 只显示其摘要 我的意思是提要不显示 内容 标签 我认为可以获得全文提要 因为我在互联网上找到了一些网站 例如http full
  • 如何在列表框中的项目之间添加填充?

    我想知道是否有办法在我的订单项之间添加填充 这是一种用于平板电脑的表单 每个表单之间的空间可以让您更轻松地选择不同的项目 有人知道我该怎么做吗 有一个ItemHeight财产 你必须改变DrawMode财产给OwnerDrawFixed使用
  • 无法使用 Ajax.BeginForm() 异步上传文件

    我正在尝试使用 Ajax BeginForm 上传文件 但没有成功 我的观点包含 using Ajax BeginForm UploadFile null new AjaxOptions HttpMethod POST UpdateTarg
  • 如何从 mongoose 中的实例方法访问静态方法?

    如何从 mongoose 中的实例方法访问静态方法 我有一个名为 Job 的工作模型 我想从实例方法 job start 调用静态方法 Job someStatic 如何从实例方法中的 this 获取对作业的引用 thanks 我发现通用地
  • 如何通过Weblogic Java API检索Weblogic的Deployment测试点

    我正在开发一个基于 JMX 的 Weblogic 健康监控代码库 我正在尝试获取所有部署测试点的列表 http地址 如下面的快照所示 并查看该网址是否可访问 有没有办法访问 Weblogic 的 Java API 中这些测试点的列表 他们在
  • 如何在 CMake 项目上运行 Visual Studio CPU 分析器?

    我正在尝试使用 Visual Studio 2022 及其分析工具来分析使用 CMake 项目构建的 C 应用程序 我以 RelWithDebInfo 模式和 MSVC x64 x64 工具集构建项目 我添加了这个片段 if MSVC se
  • 用于单元测试的模拟休息模板

    我想嘲笑一个RestTemplate在 Spring Boot 中 我在方法中进行 REST 调用 为了测试我正在创建的微服务的控制器 我想测试微服务控制器内的方法 例如 GetMapping value getMasterDataView
  • 更改 UISegmentedControl 的字体大小

    谁能告诉我如何更改字体类型和大小UISegmentedControl 我遇到了同样的问题 此代码设置整个分段控件的字体大小 类似的东西可能适用于设置字体类型 请注意 此功能仅适用于 iOS5 Obj C UIFont font UIFont
  • ChartJS 禁用图表区域外的网格线

    我试图隐藏在图表区域之外绘制的网格线 所以基本上类似于下面的选项 但对于图表区域之外 gridLines drawOnChartArea false 想必您正在寻求禁用刻度线 这可以通过drawTicks财产 new Chart docum
  • ASP.NET MVC2 中的单用户登录非常简单?

    我正在构建我的网站 并且我想限制我的网站的一部分 管理部分 正常公开显示 我正在使用 LINQ 进行数据库访问 我有一个 Service 类来处理通过 LINQ 对数据库的调用 我的整个网站都在运行 除了登录部分 到目前为止我已经only能