Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Asp.net mvc 5自定义无支架登录,数据库优先_C#_Asp.net_Asp.net Mvc_Authentication_Cookies - Fatal编程技术网

C# Asp.net mvc 5自定义无支架登录,数据库优先

C# Asp.net mvc 5自定义无支架登录,数据库优先,c#,asp.net,asp.net-mvc,authentication,cookies,C#,Asp.net,Asp.net Mvc,Authentication,Cookies,我对asp.net和mvc还很陌生,所以我会尽可能多地学习。。。为了做到这一点,我从头开始写一个博客网站,但我有点被身份验证和授权卡住了 在我学习的过程中,我真的不想使用任何脚手架的东西,我会先使用数据库,所以我不希望asp.net identity为我创建表 我对散列和盐析密码以及根据数据库检查用户很在行,我遇到的问题是将用户设置为已登录,并检查他们应该能够访问的内容。我真的很想使用authorize属性,但如果最好不要这样做,我愿意接受所有建议。你们能解释(或建议一个教程)以下内容吗 设置用

我对asp.net和mvc还很陌生,所以我会尽可能多地学习。。。为了做到这一点,我从头开始写一个博客网站,但我有点被身份验证和授权卡住了

在我学习的过程中,我真的不想使用任何脚手架的东西,我会先使用数据库,所以我不希望asp.net identity为我创建表

我对散列和盐析密码以及根据数据库检查用户很在行,我遇到的问题是将用户设置为已登录,并检查他们应该能够访问的内容。我真的很想使用authorize属性,但如果最好不要这样做,我愿意接受所有建议。你们能解释(或建议一个教程)以下内容吗

  • 设置用户登录(可能是formsauthentication.setauthcookie,这是否仍然有效??)
  • 将用户的角色添加到该cookie(或类似的内容)
  • 不要让我的应用程序不安全
  • 让我使用[Authorize(roles=“dudes,otherdudes”)]
  • 简单

    到目前为止,我所有的研究似乎都让我开始使用asp.net身份或与owin相关的东西,并与外部身份验证提供商交谈,这是我不想做的

    我试图学习和理解正在发生的事情,不是太深,只是更多的“这一点设置了cookie(会话)”,“这一点添加了角色”等等

    如果我完全偏离了目标,一些温和的指示将不胜感激

    非常感谢你的帮助

    致以最良好的祝愿,
    Jon

    因此,您需要在MVC应用程序中实现自己的用户管理系统,而不是使用成员资格提供程序

    当用户登录时,您可以在从数据库获取相关用户数据后,在
    会话
    变量中设置相关用户数据(自定义AuthKey或其他,加上用户的角色/权限)。现在,当用户尝试访问URL或执行操作时,您只需要检查用户是否已登录,以及他是否具有登录权限。此逻辑可以在自定义操作筛选器中实现,您可以通过从
    ActionFilter
    (或实现
    IActionFilter
    )派生并重写
    OnActionExecuting
    方法来创建自定义操作筛选器

    但是,请确保您实现了
    IActionFilter
    ,而不是
    iaauthorizationfilter
    ,因为您使用的是自定义授权逻辑

    现在,您可以在除
    登录
    控制器之外的所有控制器上使用此操作过滤器,以防止用户执行不允许执行的操作


    是一个关于动作过滤器的教程。

    Ahh ok cool,因此我不应该使用[Authorize]检查用户名和密码,而是将用户和角色粘贴到会话变量中,然后创建我自己的动作过滤器,比如[JonAuthorize]来检查这些变量,如果不允许,则重定向?@Jonmore Yes。这样,您就可以自定义任意数量的内容。在
    会话
    变量中存储您需要的任何数据,并以您想要的任何方式对其进行加密,并在操作筛选器中检查您想要的任何条件。没有限制。而且非常简单,易于管理,易于理解。