授权标签如何确定用户是否获得授权?
比方说,如果用户登录并且他们尝试转到具有Authorize标记的视图.它如何确定用户是否获得授权?它是否对数据库进行查询并检查?
如果他们使用角色授权进入视图怎么样?它是否查询成员资格角色表?
我只是想知道,因为我有ASP.NET成员资格表认为重复的userNames.我使用了大量的字段来确定哪个用户是什么,允许用户具有相同的重复userName,但在我的数据库中仍然是唯一的.
这导致我必须为许多.NET成员资格编写自定义方法,因为它都使用"userName"来搜索而不是使用UserId.
所以我现在想知道是否可以使用Authorize标签.因为我不知道它是如何工作的,如果我不使用.NET成员资格,我就不知道如何确定它.
好吧,我是网络开发的新手,所以我可能会错误地看到这些术语中的一些.我提前道歉.
我无法理解身份验证的不同元素.似乎有人建议不要使用每种方法,但并不总是有明确的理由.我正在为可以访问数据库的公司构建一个Web应用程序,所以我想确保它是安全的.
所以我看到通常用于存储信息的三个地方.
FormsAuthentication.SetAuthCookie().这将存储将与浏览器一起显示的会话cookie,并且客户端上没有任何敏感信息.但是,它只能存储一个值.这个 stackoverflow答案显示了一种在这里存储多个值的方法,但是给出它的人说不使用它,但不是为什么.
的FormsAuthenticationTicket.我不知道这些信息存储在何处,但它允许存储多个值的简单方法.根据文档要求保护它,需要调用Encrpty()来存储,并解密()来检索.这看起来很浪费,但我知道什么.
Session ["SomeRef"] = new CustomObject().这个问题的第二个答案解释了如何做到这一点,但对它的评论称它很危险,因为它可能被盗.这看起来对我来说是最好的方法,因为信息仍然存储在服务器上,并且可以存储多个值.
我找不到这些方法的任何比较,或者在验证用户之后存储多条信息的"最佳实践"方式的良好解释.信息只是用户名和他们的userId.
这将是我的第一个带有表单身份验证的ASP.NET MVC应用程序,所以我试图确保我不会错过任何东西.场景是这样的:公共/安全区域.
在私人区域内,它甚至进一步限于特定区域/用户.这些"区域"由对每个用户组自定义的基本区域的自定义定义.
例如,用户可以访问url /Area/Controller/Action.他们需要获得安全区域的许可,否则他们将被重定向到登录视图.
我一直在阅读AuthorizeAttribute但我不确定我应该如何/在哪里进行这些基本检查.我最初的预感是在用户的IP成功登录以及他们有权访问的内容等详细信息后,在会话中存储用户对象.
每个安全控制器调用的授权检查将验证会话中是否存在有效用户对象,IP仍然匹配,并且用户可以访问特定区域.这个设置有没有明显的漏洞?
编辑:在哪里/如何实现这些检查,以便当控制器被[授权]标记时,它将执行那些会话对象检查?
任何指针或建议将不胜感激.谢谢.
我想使用AuthorizeAttribute来控制允许哪些用户访问我的操作.我只是想澄清我的逻辑是有序的.
事物的正常流动是什么?我知道我可以继承MembershipProvider,但我不需要那里的所有功能,实际上只能用两个不同的角色登录.