C# Asp.net mvc 5自定义无支架登录,数据库优先
我对asp.net和mvc还很陌生,所以我会尽可能多地学习。。。为了做到这一点,我从头开始写一个博客网站,但我有点被身份验证和授权卡住了 在我学习的过程中,我真的不想使用任何脚手架的东西,我会先使用数据库,所以我不希望asp.net identity为我创建表 我对散列和盐析密码以及根据数据库检查用户很在行,我遇到的问题是将用户设置为已登录,并检查他们应该能够访问的内容。我真的很想使用authorize属性,但如果最好不要这样做,我愿意接受所有建议。你们能解释(或建议一个教程)以下内容吗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属性,但如果最好不要这样做,我愿意接受所有建议。你们能解释(或建议一个教程)以下内容吗 设置用
Jon因此,您需要在MVC应用程序中实现自己的用户管理系统,而不是使用成员资格提供程序 当用户登录时,您可以在从数据库获取相关用户数据后,在
会话
变量中设置相关用户数据(自定义AuthKey或其他,加上用户的角色/权限)。现在,当用户尝试访问URL或执行操作时,您只需要检查用户是否已登录,以及他是否具有登录权限。此逻辑可以在自定义操作筛选器中实现,您可以通过从ActionFilter
(或实现IActionFilter
)派生并重写OnActionExecuting
方法来创建自定义操作筛选器
但是,请确保您实现了IActionFilter
,而不是iaauthorizationfilter
,因为您使用的是自定义授权逻辑
现在,您可以在除登录
控制器之外的所有控制器上使用此操作过滤器,以防止用户执行不允许执行的操作
是一个关于动作过滤器的教程。Ahh ok cool,因此我不应该使用[Authorize]检查用户名和密码,而是将用户和角色粘贴到会话变量中,然后创建我自己的动作过滤器,比如[JonAuthorize]来检查这些变量,如果不允许,则重定向?@Jonmore Yes。这样,您就可以自定义任意数量的内容。在
会话
变量中存储您需要的任何数据,并以您想要的任何方式对其进行加密,并在操作筛选器中检查您想要的任何条件。没有限制。而且非常简单,易于管理,易于理解。