我正在建立一个站点,用户可以登录并查看数据,而管理员可以登录和查看数据以及创建/编辑/删除用户。
我已经创建了它,并且一切正常,用户被带到了数据页面,而管理员可以选择查看数据页面或用户页面。但是存在一个大缺陷,当用户登录URL时,如果他们在EditUser页面上输入正确的地址,则他们可以查看该URL,这也使他们可以编辑用户。
有没有一种方法可以拒绝用户查看此页面而只允许管理员?
我确实为管理员和用户提供了一个单独的数据库。
答案 0 :(得分:0)
您应该为每个登录的管理员创建一个会话,如果您仅通过链接就可以访问该页面,则每个人都可以登录。我不是html方面的专家,但是我认为您应该使用类似REST链接(https://blog.restcase.com/restful-api-authentication-basics/)
答案 1 :(得分:0)
您需要确保具有正确的服务器端身份验证和授权(所有后端请求都应通过每个用户请求的身份验证和授权)。听起来您可能已经在对用户进行身份验证,但是您没有在进行授权。
简而言之,身份验证正在找到“谁发出了此请求?”的答案。授权正在找到“是否允许该用户提出此请求?”的答案。
您所有的后端请求都应验证发出请求的用户(通过将用户名+密码或令牌与数据库中的内容进行匹配),然后您将知道该用户是普通成员还是管理员。然后,确保仅针对管理员的请求仅在经过身份验证的用户具有管理员权限时有效。
答案 2 :(得分:0)
我不建议您创建自己的validate \ role提供程序系统。正确地执行此操作并阻止所有可能的攻击,并正确加密和存储登录信息,这非常复杂。使用已经可用的解决方案之一,例如“身份” link
答案 3 :(得分:0)
在我的ASP.Net Razor网站上,我检查页面加载的第一件事是查看当前用户是否属于管理组,如果不属于该用户,我会将其重定向到主页。