Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 719305
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 14, 20262026-05-14T05:37:36+00:00 2026-05-14T05:37:36+00:00

I want to hide the urls for editing users and their profiles behind safer

  • 0

I want to hide the urls for editing users and their profiles behind safer and meaningful urls. For instance, I want /user/13/edit to be /settings/account and /user/13/profile/edit to be /settings/profile.

I managed to achieve that, but for that I had to load the user information from the current_user bit from the session. Like so:

# users_controller
def edit
  @user = current_user
end

# profiles_controller
def edit
  @user = current_user
  @profile = @user.profile
end

But now, since I can’t compare @user.id from the params with the current_user in the session, how can I stop the old urls (/user/13/edit and /user/13/profile/edit) from being exploitable? They always load the forms for the current user, so there’s no harm done, but I’d be more comfortable if they just produced a 404 error or something.

Thanks in advance.

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-14T05:37:36+00:00Added an answer on May 14, 2026 at 5:37 am

    First of all, your authentication mechanism needs to set the current user.

    routes.rb

    map.account '/settings/account', :controller => 'user', :action => 'edit' 
    map.profile '/settings/profile', :controller => 'user', :action => 'edit_profile'
    
    map.resources :users, :only => [:edit, :update, :show],
                  :member => { :edit_profile => :get, :update_profile, :put }
    

    this produces the following routes:

    /settings/account         (get)
    /settings/profile         (get)
    /users/:id                (get, put)
    /users/:id/edit           (get)
    /users/:id/edit_profile   (get)
    /users/:id/update_profile (put)
    

    users_controller.rb

    before_filter :redirect_if_unauthorized
    
    def edit
      @user = current_user
    end
    
    # profiles_controller
    def edit
      @user = current_user
      @profile = @user.profile
    end
    
    protected
    
    def redirect_if_unauthorized
      redirect_to some_path if params[:id] or current_user.nil?
    end
    

    Obviously some_path does not exist, you will have to create a page/path, etc. to display an error.

    With this solution, you never display/manipulate a user based on params[:id], only the current_user saved by your authentication scheme.


    I might also suggest looking at the declarative_authorization gem/plugin (Github, Railscast)

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I want to hide the download folder location so that when the user downloads
I want hide a particular vocabulary from users other than admins. How can I
I want hide some fields in existed XML and use that XML as Input
I want to hide an option in my form unless a specific option is
I want to hide all other LI's in a certain UL except the LI
I want to hide framelayout dynmically in android, How I can achieve this.
I want to hide the blurred shadow of a SBBulletinBlurredShadowLabel (Private Framework) by hooking
I want to hide the Next button on my ASP.NET Wizard control using JavaScript.
I want to hide the cursor when showing a webpage that is meant to
I want to hide all mysql error messages without using mysql_error() . Are there

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.